Javascript node.js中的箭头函数上下文
使用MDN文档中箭头函数的以下示例,位于 当我将该代码复制/粘贴到node.js 0.12Javascript node.js中的箭头函数上下文,javascript,node.js,ecmascript-6,arrow-functions,Javascript,Node.js,Ecmascript 6,Arrow Functions,使用MDN文档中箭头函数的以下示例,位于 当我将该代码复制/粘贴到node.js 0.12node--harmony时,this.age++行似乎不是指Person上下文,而是指setInterval上下文。将console.log(this)添加到回调中似乎证实了这一点 当我使用其他es6->es5 Transpiler时,它总是按预期工作。这是node.js中的错误吗?我错过什么了吗 编辑:也许这就是原因 区别在于,他们讨论的是Chrome,而这个问题是关于Node.js的。据了解,尽管他们
node--harmony
时,this.age++代码>行似乎不是指Person
上下文,而是指setInterval
上下文。将console.log(this)
添加到回调中似乎证实了这一点
当我使用其他es6->es5 Transpiler时,它总是按预期工作。这是node.js中的错误吗?我错过什么了吗
编辑:也许这就是原因
区别在于,他们讨论的是Chrome,而这个问题是关于Node.js的。据了解,尽管他们都使用V8,但他们有不同级别的ES6支持 原因似乎是V8尚未更新以支持词法这一
。看起来您已经找到了原因。这个问题是在不到一个月前提出的。正如@JLRishe所指出的,如果你已经找到了解决方案,你应该发布这个问题的答案并接受它。刚刚发布了答案,但我希望在我这么做之前其他人能确认。
function Person(){
this.age = 0;
setInterval(() => {
this.age++; // |this| properly refers to the person object
}, 1000);
}
var p = new Person();