我正在尝试绑定此功能
var addon = function(a){
if (typeof a == "string"){
return this+a;
}else{
return this+String(a||"");
}
}
要
String.prototype.addon
所以当我打电话时
"I".addon(" remember.");
返回
"I remember."
到目前为止,这是我对String.prototype.addon所拥有的。
String.prototype.addon = addon.bind();
我无法弄清楚通过绑定传递什么作为此变量,任何人都可以解决这个问题吗?
答案 0 :(得分:1)
相当简单,您只是调用该功能而不是分配它。
尝试
String.prototype.addon = addon;
然后
"I".addon(" remember.");
> "I remember."
答案 1 :(得分:1)
Bind创建一个新函数,将其设置为传递给bind()的第一个参数。
这是一个示例,演示如何使用bind传递成员方法,具有正确的结果:
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
您还可以在第一个参数之后添加额外的参数,bind将传递这些值到原始函数,然后传递传递给绑定函数的额外参数:
// 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