在原型扩展内使用箭头功能时,出现了我看到的意外行为。

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
    }
}

最佳答案

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

这就是为什么在Chrome node.js和io.js中,必须设置一个特殊的“ harmony”参数来使用它:它不适合常规使用。

09-18 05:23