箭头函数不能在ES6类里面绑定`this`吗?

我很惊讶,这是行不通的。 (我用iojs标志运行iojs 2.3.0。)

 class Foo { constructor() { this.foo = "foo"; } sayHi() { return (() => this.foo)(); } } f = new Foo(); f.sayHi // Cannot read property 'foo' of undefined. 

我会期望箭头函数为此选取正确的值。 我错过了什么吗?

我不知道这个问题,但我的版本适合我:

 class Foo { constructor() { this.foo = "foo"; } sayHi() { return (() => console.log(this.foo))(); } } const f = new Foo(); f.sayHi(); 

顺便说一句:我正在使用babel

你的IIFE正在创造一个新的范围。 那么this就是指未定义this.foo的IIFE的范围。

你解决这个问题的方法是绑定你的IIFE。

 class Foo { constructor() { this.foo = 'foo'; } sayHi() { return (() => { return this.foo; }.bind(this))(); } } let f = new Foo(); console.log(f.sayHi()); //foo