哦 你说的这种情形是typescript的一个特性 ts编译过程中把this替换成了_this 为了确保你能取到“对象类定义”意义上的this 而不是指代当前函数的this
class MainController {
public test() {
jQuery('div.test2').on('click', () => {
this.test()// 此处this指代MainController 会被编译器的_this替代
});
jQuery('div.test2').on('click', function () {
this.hide(); //此处this没有类型提示 原因是typescript无法推定jQuery到底把函数挂在什么对象上调用了
})
//下面是typescript当中标准的用法 虽然看起来麻烦 但是确保编译器类型提示都正常工作
interface $handler extends JQuery { }
class $handler { //所以typescript就是为了让你自己推定类型 在可控的类型定义当中使用this
onClick() {
this.hide(); //这个this就是JQuery对象 类型提示正常工作
}
}
jQuery('div.test2').on('click', $handler.prototype.onClick);
}
}
【 在 javaboy 的大作中提到: 】
: 先说那个this的问题。
: 我根据你的代码稍改了一下:
:
https://jsfiddle.net/fppz8ouw/: ...................
--
修改:facilitator FROM 110.23.10.*
FROM 110.23.10.*