[英]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.