o.x = this.x); this 的值变为 window 而不是调用对象。我真正想做的是: -6ren">
gpt4 book ai didi

javascript - 将 "this"绑定(bind)到 TypeScript Lambda

转载 作者:搜寻专家 更新时间:2023-10-30 21:13:10 31 4
gpt4 key购买 nike

假设我在 TypeScript 中有一个 lambda:

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

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

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

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

最佳答案

仅供引用,即使没有 lambda,a for each 中的默认 this 也是 window 例如:

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

要使用 bind 修复 this,您需要使用 function 而不是 lambda(它在词法上限定了 this 的含义)。

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

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

关于javascript - 将 "this"绑定(bind)到 TypeScript Lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27364238/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com