绑定"这个"到TypeScript Lambda

时间:2014-12-08 18:14:18

标签: javascript typescript this function-binding

说我在TypeScript中有一个lambda:

 myArray.forEach(o => o.x = this.x);

this的值变为window而不是调用对象。我真正想做的是:

 myArray.forEach(o => { o.x = this.x; }.bind(this));

但我不认为这是TypeScript中的一个选项。如何在TypeScript lambda体中覆盖this

1 个答案:

答案 0 :(得分:1)

即使没有lambda,仅仅是FYI,a中的默认thiswindow,例如:

[1].forEach( function ( o ) { console.log( this ) }); // window

要使用bind解决此问题,您需要使用function而不是lambda(在词法上限定this的含义)。

var foo = {};
[1].forEach( function ( o ) { console.log( this ) }.bind( foo ) ); // object `foo`

或者你可以使用Bergi提到的forEach的第二个参数。