将 '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
我正在尝试绑定这个函数
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