我有以下代码,无需使用“ bind”方法就可以得到相同的结果。
var car = {
registrationNumber: "GA12345",
brand: "Toyota",
displayDetails: function(ownerName){
console.log(ownerName + ", this is your car: " + this.registrationNumber
+ " " + this.brand);
}
}
var myCarDetails = car.displayDetails("Vivian")
var myCarDetails = car.displayDetails.bind(car, "Vivian");
myCarDetails();
换句话说,您能告诉我一个需要使用“绑定”的真实示例吗? 我知道如何使用绑定,我只是不知道为什么/何时需要使用它?
答案 0 :(得分:0)
bind
最常见的用例是使一个函数始终具有相同的this
关键字。
这是什么意思?
Bind创建一个新函数,该函数会将其设置为传递给bind()的第一个参数。检查创建于here的示例:
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 - it is the global object
var boundClick = myButton.click.bind(myButton);
boundClick(); // bound, 'this' is myButton
//Print will be: OK clicked. Undefined clicked. Ok clicked