【发布时间】:2020-11-07 22:06:51
【问题描述】:
我使用 string.prototype 来链接我网站上的文本段落。在某些网站上,我想添加不同的注释,因此想传递一个额外的参数来链接。
我最初的想法是这样做。
function linkifyText() {
var uglyLinksPattern = /\[(.*?)\]/gim; // match all letters between square brackets
if(!String.linkify) {
String.prototype.linkify = function(note) {
var textInput = this;
return textInput.replace(uglyLinksPattern, '<a target="_blank" rel="noopener nofollow" href="$&">$&</a>' + note);
}
}
return uglyLinksPattern
}
function linkifyDialogue (text) {
linkifyText();
var note = 'Ad';
var linkedText = String.linkify.call(text, note);
$('#textElem').html(linkedText);
}
我找到了一些使用call 和apply 的教程。但是,我无法将其转移到我的案例中,并希望获得有关如何将参数传递给 string.prototype 属性的答案。那么有什么诀窍呢?
【问题讨论】:
-
您要定义
String.linkify(静态方法)还是String.prototype.linkify? -
String.prototype.linkify
-
那么您正在测试
if中的错误内容。 -
不知道为什么要捕获
var textInput = this,而您可以改用this.replace。还鉴于现在是 2020 年,为什么不const uglyLinksPattern?尝试使用let和const而不是var。 -
好吧,你说得有道理。
textInput是为了提高可读性。
标签: javascript string prototype