为什么(不是如何)使用“ bind”方法访问“ this”方法?

时间:2019-06-19 18:24:26

标签: javascript binding javascript-objects

我有以下代码,无需使用“ 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();

换句话说,您能告诉我一个需要使用“绑定”的真实示例吗? 我知道如何使用绑定,我只是不知道为什么/何时需要使用它?

1 个答案:

答案 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