说我在TypeScript中有一个lambda:
myArray.forEach(o => o.x = this.x);
this
的值变为window
而不是调用对象。我真正想做的是:
myArray.forEach(o => { o.x = this.x; }.bind(this));
但我不认为这是TypeScript中的一个选项。如何在TypeScript lambda体中覆盖this
?
答案 0 :(得分:1)
即使没有lambda,仅仅是FYI,a中的默认this
为window
,例如:
[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
的第二个参数。