将参数传递给 javascript 中的 string.prototype 扩展
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=''></a>"+note);
};
function linkifyDialogue(text) {
var note="Ad",
linkedText=text.linkify(note);
$('#textElem').html(linkedText);
}
所有的字符串都已经是对象了。如果您向原型添加一个方法,则无需使用 call()
或 apply()
除非您确实需要(即用 this
的不同值调用它,传递一个数组值作为不同的参数等)。
我使用 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=''></a>"+note);
};
function linkifyDialogue(text) {
var note="Ad",
linkedText=text.linkify(note);
$('#textElem').html(linkedText);
}
所有的字符串都已经是对象了。如果您向原型添加一个方法,则无需使用 call()
或 apply()
除非您确实需要(即用 this
的不同值调用它,传递一个数组值作为不同的参数等)。