gpt4 book ai didi

javascript - 在 typescript 类中使用 "this"

转载 作者:行者123 更新时间:2023-11-30 12:53:31 29 4
gpt4 key购买 nike

我正在对与 dataContext 相关的 typescript 类进行一些重构。事情是昨天我花了很多时间试图弄清楚为什么我没有从我的新数据上下文中获得微风。 promise 。最后我得到了解决方案,它与“this”的范围有关。错误使用“this”的示例:

public getSomething(){
return this.manager.executeQuery(query)
.then(function (data) {
//THIS IS NOT WORKING" INSIDE OF THE FUNCTION
this.log('this log will never be loged :(');
}
}

现在相同的代码工作正常,但使用“that”作为临时变量:

public getSomething(){
var that=this;
return this.manager.executeQuery(query)
.then(function (data) {
that.log('get something is complete');
}
}

如果您在上面看到第二段代码工作正常,但我必须对我类(class)中的每个方法重复该过程。现在我的问题是:我怎样才能在类级别创建一个“that”变量?这可能吗?

我尝试使用下面的代码,但出现编译错误:“找不到符号‘that’。”

 export class eventDataContext extends dataContextBase.dataContextBase {
public that;

constructor() {
super();
that = this;
...
}
}

知道如何将这个新变量“that”放在类级别吗?谢谢!

最佳答案

TypeScript 有一个方便的快捷方式来解决这个问题,称为“粗箭头语法”=>

如果您使用以下内容,它应该适合您:

getSomething(){
return this.manager.executeQuery(query)
.then((data) => {
this.log('This *will* now be logged :)');
});
}

快速免责声明 - 我不确定您的 query 来自哪里 - 它没有传递到 getSomething 方法中。如果它是类属性,请使用 this.query

关于javascript - 在 typescript 类中使用 "this",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20122460/

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