3

假设我在 TypeScript 中有一个 lambda:

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

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

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

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

4

1 回答 1

2

仅供参考,即使没有 lambda this,每个的默认值是window例如:

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

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

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

或者,您可以使用forEachBergi 提到的第二个参数。

于 2014-12-08T23:41:00.543 回答