Javascript 如何获得“的范围”;这";打字
我有以下课程:Javascript 如何获得“的范围”;这";打字,javascript,typescript,scope,Javascript,Typescript,Scope,我有以下课程: module ModuleName { export class ClassName { constructor() { this.bindEvents(); } bindEvents() { var self = this; $("#save-button").off("click") .click(() =>
module ModuleName {
export class ClassName {
constructor() {
this.bindEvents();
}
bindEvents() {
var self = this;
$("#save-button").off("click")
.click(() => {
self.classFunction();
});
};
classFunction(){
}
}
}
我希望self变量现在包含对类的引用。(编译甚至告诉我它确实如此!)
但是,当js加载到客户端时,它找不到函数,bevause self指向窗口对象而不是类
如何实现这一点,以便能够引用我的类
生成的js:
ClassName.prototype.bindEvents= function () {
var self = this;
$("#save-button").off("click")
.click(function () {
self.classFunction();
});
};
使用箭头功能将解决您的问题
const bindEvents = () => {
// your code
}
ES6在普通函数中不会将“this”自动绑定到类语法
使用箭头函数将“this”引用到类 由于使用了箭头函数,
无论如何都应该保留此
。因此,()=>这个.classFunction()
应该可以工作,而不需要self
。如何调用构造函数中的示例代码或其他事件中的bindEvents
呢?@TitianCernicova Dragomir是的,我在构造函数中调用bindEvents,如我的示例所示。当我尝试你的解决方案时,结果是一样的。“this”指向窗口而不是类。我添加了生成的js。并不是说这在这里是必要的……这对我来说是有效的,而且是必要的。也许是因为ES5仍在使用?但是没有箭头,编译器在js中产生了错误的作用域