[英]ES6 arrow function lexical this in V8
我使用胖箭頭函數有以下ES6代碼:
var test = {
firstname: 'David',
fn: function() {
return ['one', 'two', 'tree'].map(() => this.firstname)
}
}
console.log(test.fn())
根據箭頭函數應該如何工作,我希望this
是test
對象。 ES6Fiddle ,Traceur和Firefox產生了預期的輸出,即["David", "David", "David"]
。
使用chrome://flags/#enable-javascript-harmony
在Chrome中啟用這些功能時,我得到[undefined, undefined, undefined]
。 如果你使用console.log(this)
它會顯示它是窗口對象,並且在嚴格模式下會出現錯誤。 this
ES6箭頭功能的詞匯是否在V8中沒有實現?
詞典this
是ES6箭頭功能的最后一部分落在v8中,這就是為什么它仍然落后於旗幟而尚未准備好發貨的原因。 Igalia的Adrian Perez正在實施箭頭功能,一旦完成一些TurboFan問題,最終補丁幾乎准備就緒: https ://codereview.chromium.org/883823002/
胖箭是ES6的一個特征。 它已在Firefox(Gecko)中引入,但尚未在其他瀏覽器中引入(尤其不完全在V8中,這對於nodejs / iojs開發很有意義。)這是一個參考文檔
無論如何如果你需要范圍綁定,那么而不是=>
使用bind()
。 這是一個簡單的例子。
而不是這個。
$("#example").on("click", () => {
// your code goes here
});
用這個。
$("#example").on("click", (function() {
// your code goes here
}).bind(this));
如果您不需要范圍綁定,則只需執行此操作即可。
$("#example").on("click", function() {
console.log("example");
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.