打字稿中的 this 关键字。这是一个错误吗?

2024-04-01

我有一个成员函数 render()。该函数调用类的另一个成员add(any)。这是片段。

render(){
    collection.each(this.add);
}

如果我在add中使用关键字“this”,则类型是window。我希望它是成员类的实例。

在构造函数、成员函数或成员访问器中,this 属于包含类的类实例类型。


正如 JcFx 指出的那样,您的this范围内不同each打回来。

但是,如果您使用“粗箭头”匿名函数,它将使用词法作用域规则this这样你就可以得到你正在寻找的东西:

render(){
    collection.each((x) => this.add(x));
}

编译为以下 JavaScript:

X.prototype.render = function () {
    var _this = this;
    collection.each(function (x) {
        return _this.add(x);
    });
}

另一种选择是明确bind the add呼叫所需的this:

render(){
    collection.each(this.add.bind(this));
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

打字稿中的 this 关键字。这是一个错误吗? 的相关文章

随机推荐