示例 1 中的问题是“this”指的是全局名称而不是 myName 对象。
我理解bind()在给特定对象设置this的值时的使用,所以它解决了例子1中的问题,但是为什么首先会出现这个问题呢?它只是创建 Javascript 的方式吗?
我也想知道为什么示例 3 解决了这个问题以及示例 2 和 3 之间的区别。
this.name = "John"
var myName = {
name: "Tom",
getName: function() {
return this.name
}
}
var storeMyName = myName.getName; // example 1
var storeMyName2 = myName.getName.bind(myName); // example 2
var storeMyName3 = myName.getName(); // example 3
console.log("example 1: " + storeMyName()); // doesn't work
console.log("example 2: " + storeMyName2()); // works
console.log("example 3: " + storeMyName3); // works