在节点0.11 w / Foo.prototype中使用ES6箭头函数

时间:2015-01-25 18:21:02

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

我在原型扩展中使用箭头函数时看到了我所看到的意外行为。

function ES6Example(){}
ES6Example.prototype.foo = function(bar){
  return ((baz) => {
    console.log(this)
    this.bar = baz
  })(bar)
}

var es6Example = new ES6Example
es6Example.foo('qux')

console.info(es6Example.bar)

上述代码导致打印出全局上下文,并且es6Example.bar未定义。这是旧的行为。根据我在MDN中看到的文档,我预计这将绑定到实例。我使用和声标志使用Node v0.11.15运行上面的代码。请注意,以下内容确实有效:

function ES6Example(){
    this.foo = baz => {
      this.bar = baz
    }
}

1 个答案:

答案 0 :(得分:2)

V8的实现仍然不完整,仍然没有词汇this

这就是为什么,在Chrome node.js和io.js中,你必须设置一个特殊的“和声”参数来使用它:它还没有为一般消费做好准备。