[英]Pass arguments to string.prototype extension in javascript
我使用 string.prototype 来链接我网站上的文本段落。 在某些站点上,我想添加不同的注释,因此想向 linkify 传递一个额外的参数。
我最初的想法是按如下方式进行。
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 属性的答案。 那么诀窍是什么?
您尝试实施它的方式有点奇怪(无意冒犯)。 你可以让这更简单。 看:
//Do this just once
String.prototype.linkify=function(note) {
return this.replace(/\[(.*?)\]/gim,"<a target='_blank' rel='noopener nofollow' href='$1'>$1</a>"+note);
};
function linkifyDialogue(text) {
var note="Ad",
linkedText=text.linkify(note);
$('#textElem').html(linkedText);
}
所有字符串都已经是对象。 如果您向原型添加方法,则无需使用call()
或apply()
除非您确实需要(即为this
使用不同的值调用它,将值数组作为不同的参数传递等) .
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.