示例1中的問題是'this'引用全局名稱而不是myName對象。爲什麼JavaScript bind()是必需的?
我明白使用bind()將它的值設置爲特定的對象,所以它解決了示例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
* 「是不是剛剛的Javascript創建的方式是什麼?」 *我想是的。 「this」的值是動態確定的,除非它是綁定或箭頭函數。不知道你想知道還有什麼期望[學習如何'這個'工作](https://github.com/getify/You-Dont-Know-JS/blob/master/this%20%26%20object%20prototypes /ch1.md)。 –
[Javascript call()&apply()vs bind()?](http://stackoverflow.com/questions/15455009/javascript-call-apply-vs-bind) – azad
*「我也想知道爲什麼示例3解決了問題「*'storeMyName'和'storeMyName2'包含* functions *,而'storeMyName3'包含調用*'myName.getName()'的*結果*。巨大差距。我在調用函數和'.bind'的方法之間進行了這種比較:https://twitter.com/fkling42/status/736228742008176640。也許它有助於某種方式。 –