node.js中的箭头函数上下文

时间:2015-02-20 21:32:08

标签: javascript node.js ecmascript-6 arrow-functions

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

的箭头函数的MDN文档中使用以下示例
function Person(){
  this.age = 0;

  setInterval(() => {
    this.age++; // |this| properly refers to the person object
  }, 1000);
}

var p = new Person();

当我将该代码复制/粘贴到node.js 0.12 node --harmony时,this.age++;行似乎并不是指Person个上下文,而是setInterval。 1}}上下文。将console.log(this)添加到回调中似乎可以确认。

当我使用其他es6-> es5转换器时,它始终按预期工作。这是node.js中的错误吗?我错过了什么吗?

编辑:也许这就是原因? ES6 arrow function lexical this in V8

区别在于,他们正在讨论Chrome,而这个问题与Node.js有关。根据{{​​3}},他们有不同级别的ES6支持,即使他们都使用V8。

1 个答案:

答案 0 :(得分:2)

似乎原因是V8尚未更新以支持词汇this