将 'this' 变量从 javascript 'String' 函数绑定到另一个插件函数

Bind 'this' variable from javascript 'String' function to another addon function

我正在尝试绑定这个函数

 var addon = function(a){
        if (typeof a == "string"){ 
            return this+a;

        }else{ 
            return this+String(a||"");
        }

    }

String.prototype.addon

所以当我打电话时

"I".addon(" remember.");

它returns

"I remember."

这是我目前 String.prototype.addon 的内容。

String.prototype.addon = addon.bind();

我不知道要通过 bind 作为 this 变量传递什么,有人能弄清楚吗?

这很简单,您只需调用函数而不是分配它。

尝试

String.prototype.addon = addon;

然后

"I".addon(" remember.");
> "I remember."

Bind 创建一个新函数,它将把这个设置为传递给 bind() 的第一个参数。

这是一个示例,说明如何使用 bind 传递具有正确 this 的成员方法:

var Button = function(content) { 
  this.content = content;
};
Button.prototype.click = function() {
  console.log(this.content + ' clicked');
}

var myButton = new Button('OK');
myButton.click();

var looseClick = myButton.click;
looseClick(); // not bound, 'this' is not myButton

var boundClick = myButton.click.bind(myButton);
boundClick(); // bound, 'this' is myButton

打印出:

OK clicked
undefined clicked
OK clicked

您还可以在第一个参数之后添加额外的参数,绑定会将这些值传递给原始函数,然后再将额外的参数传递给绑定函数:

// Example showing binding some parameters
var sum = function(a, b) {
  return a + b;
};

var add5 = sum.bind(null, 5);
console.log(add5(10));

打印出:15

来源和一些示例:JavaScript Function bind