下面的代碼中使用時:深刻的理解:爲什麼.bind(這一點)似乎並沒有遵循正常規則,新希望
var this_module = {
foo: 'something',
promise: function() {
return new Promise (function(resolve, reject) {
resolve (this.foo);
}.bind(this))
}
}
成功綁定this
到this_module
。我不明白爲什麼。
new
運營商通常將this
設置爲作爲對給定函數的構造調用的一部分創建的對象。這意味着對Promise函數的構造調用會將this
設置爲Promise對象。如果是這種情況,則.bind(this)
也應該將執行器功能的this
設置爲Promise對象。
或者.bind(this)
應該將執行器函數的this
設置爲Promise函數(在上例中應該是全局對象)的this
值。
爲什麼不是這樣?
的'new'運營商無關,與你傳遞給函數到'承諾'。你在'Promise'上調用'new',而不是你傳遞給'Promise'的函數。 *「如果是這種情況,則'.bind(this)'還應該將執行程序函數的'this'設置爲Promise對象。」*當您調用'.bind(this)'時,promise對象不存在' 。 'this'指的是'promise'中指的是'function(){}'。我很困惑,你認爲它應該不是'this_module'。它完全遵循*「正常」規則。 –
如果你有'var handler = function(resolve,reject){...} .bind(this);返回新的Promise(處理程序);'而不是? –
那麼爲什麼'this'不參考Promise函數中的全局對象呢? – rabbitco