繁体   English   中英

将参数传递给 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);        
}

我找到了一些使用callapply教程。 但是,我无法将其转移到我的案例中,并希望得到有关如何将参数传递给 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM