我在原型扩展中使用箭头函数时看到了我所看到的意外行为。
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
}
}
答案 0 :(得分:2)
V8的实现仍然不完整,仍然没有词汇this
。
这就是为什么,在Chrome node.js和io.js中,你必须设置一个特殊的“和声”参数来使用它:它还没有为一般消费做好准备。