jQuery this关键字与打字稿本this冲突

时间:2018-08-20 05:47:56

标签: jquery typescript

我是打字稿的新手 当我使用jQuery时,

export class IDE{
    init():any{
    $("select").on("change",function(){
        this.run();//cannot working because we in jQuery context.
    })

    }

    run():any{
    }
}

此关键字被jQuery的'this'关键字覆盖,有人可以给我一些想法吗?

1 个答案:

答案 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{
    }
}
  

之前无法正常工作的原因::每个新函数都定义了自己的此值(基于调用函数的方式,如果是,则为新对象   构造函数,在严格模式函数调用中未定义,基础对象   如果该函数被称为“对象方法”等)