面试题答案
一键面试class MyClass {
private myProperty: string = 'example';
async myMethod() {
const self = this;
return new Promise<void>((resolve) => {
setTimeout(() => {
console.log(self.myProperty);
resolve();
}, 1000);
});
}
}
上述代码中,通过在myMethod
方法内部创建self
常量,存储this
的引用,在异步操作(setTimeout
)中使用self
来访问类实例的属性myProperty
,确保this
在异步操作中指向类实例本身。
如果非要使用this
类型注解,可以这样写:
class MyClass {
private myProperty: string = 'example';
async myMethod(this: MyClass) {
return new Promise<void>((resolve) => {
setTimeout(() => {
console.log(this.myProperty);
resolve();
}, 1000);
});
}
}
在方法定义async myMethod(this: MyClass)
中,通过this: MyClass
明确指定this
的类型为MyClass
,这样在异步操作内部使用this
时,就能确保其指向类实例本身。