3

TypeScript にラムダがあるとします。

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

の値は、呼び出し元のオブジェクトの代わりにthisなります。window私が本当にやりたいことは次のとおりです。

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

しかし、それは TypeScript のオプションとは思えません。thisTypeScriptラムダ本体でオーバーライドするにはどうすればよいですか?

4

1 に答える 1

2

参考までに、ラムダがなくてもthisfor each のデフォルトは次のwindowとおりです。

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

これを修正するには、ラムダではなく abindを使用する必要がありますfunction(これは、 の意味を字句的にスコープしthisます)。

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

forEachあるいは、Bergi が述べたように、2 番目の引数を使用することもできます。

于 2014-12-08T23:41:00.543 に答える