Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获得“的范围”;这";打字_Javascript_Typescript_Scope - Fatal编程技术网

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中产生了错误的作用域