在TypeScript中,如果使用() => {...}
定义函数,this
变量将引用周围类的实例。但是,如果您使用function () {...}
,则this
变量将具有旧的JavaScript解释。
有没有办法在TypeScript函数中访问这两个this
变量?
在TypeScript中使用JQuery时偶尔需要这个:
class X {
private v : string;
constructor() {
$('.xyz').on('change', function() {
this.v = $(this).prop('value'); // Two different this's
})
}
}
在代码的中心行,第一个this
应该引用类X对象,而第二个this
应该引用触发事件的JQuery对象。
答案 0 :(得分:5)
在change
事件处理程序this
中,将引用仅引发事件的.xyz
元素。如果你想要引用包含X
类,那么你需要存储一个包含该引用的变量,如下所示:
class X {
private v : string;
constructor() {
var _x = this;
$('.xyz').on('change', function() {
_x.v = $(this).prop('value');
})
}
}