我是打字稿的新手 当我使用jQuery时,
export class IDE{
init():any{
$("select").on("change",function(){
this.run();//cannot working because we in jQuery context.
})
}
run():any{
}
}
此关键字被jQuery的'this'关键字覆盖,有人可以给我一些想法吗?
答案 0 :(得分:5)
您可以通过3种方式解决上下文问题,在这里:
1):使用 fat arrow :
$("select").on("change",() => {
this.run();
})
2)使用
bind
:
$("select").on("change",function(){
this.run();
}.bind(this)); // <----- HERE
3)传递
this
的引用:
export class IDE{
init():any {
let self = this;
$("select").on("change",function(){
self.run();
})
}
run():any{
}
}
之前无法正常工作的原因::每个新函数都定义了自己的此值(基于调用函数的方式,如果是,则为新对象 构造函数,在严格模式函数调用中未定义,基础对象 如果该函数被称为“对象方法”等)