簡體   English   中英

ES6箭頭功能在V8中有詞匯

[英]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())

根據箭頭函數應該如何工作,我希望thistest對象。 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開發很有意義。)這是一個參考文檔

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions#Browser_compatibility

無論如何如果你需要范圍綁定,那么而不是=>使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM