我在 this 关键字方面遇到问题。
我有一个将由第三方JavaScript库调用的方法(我无法修改该库的代码),并且在方法 this 中将其设置为特定的上下文(来自第三方库),因此我定义了TypeScript方法,如下所示:
class CFoo {
private foo(value?: number) {
// get the value of this (returned from the third-party library)
const model = this;
// call another method inside the class
this.anotherMethod();
}
private anotherMethod()
{
}
}
但是在方法内部,我需要在同一类中调用另一个方法。
当我尝试调用其他方法时,出现JavaScript错误“ anotherMethod”不是函数。
但是,如果我以这种方式声明方法
private foo = (value?: number) => {
}
我可以从类的角度获得正确的信息,我的意思是,我可以使用 this.method()访问类成员,但是我无法访问第三方库提供的值通过 this 。
我需要访问第三方库提供的 this 值,并且需要能够在类内部调用另一个方法。
我该如何解决?
更新:
调用方法时
this = { 名称:“ xxx”, 年龄:40 };
根据@vlaz的评论更新课程
class CFoo {
me = this; // @vlaz suggestion
private foo(value?: number) {
// get the value of this (returned from the third-party library)
const model = this as any;
/*
* model = {
* name: "xxx",
* age: 40
* };
*
*/
// call another method inside the class
me.anotherMethod(); // typescript error
}
private anotherMethod()
{
}
}
当我尝试调用 anotherMethod()时,TypeScript编译器显示以下错误
找不到名称“我”。您是说实例成员“ this.me”吗?
答案 0 :(得分:1)
class CFoo {
private foo: Function;
constructor() {
const self = this;
this.foo = function (value?: number) {
// get the value of this (returned from the third-party library)
const model = this;
// call another method inside the class
self.anotherMethod();
}
}
private anotherMethod()
{
}
}