从嵌套函数访问类成员

fat*_*zzy 8 javascript oop


我在javascript中有这个类

var MyGird = Class.extend({
  classMemeber1 : "Some Value"
  ,clickEvent : function(){
        this.editor.on({
            afteredit: function() {
                //
                //  HOW TO I ACCESS classMemeber1 from here? ?
                //
                //
            }
        })
})
Run Code Online (Sandbox Code Playgroud)

我如何从afteredit内部访问classMemeber1 ...
谢谢

gbl*_*zex 27

您需要clickEvent通过在变量中存储this [1]来保存对象调用函数的引用.afteredit由于关闭,它将在方法内部可用.

var MyGird = Class.extend({
    classMemeber1: "Some Value",
    clickEvent: function () {
        var self = this; // save object reference
        this.editor.on({
            afteredit: function () {
                // access classMemeber1 from here
                // by using the stored reference
                alert(self.classMemeber1);
            }
        });
    },
    // ...
});
Run Code Online (Sandbox Code Playgroud)

[1] 这个运算符在javascript中(注意:'this'不是运算符)


Nic*_*oub 6

如果您编写ES6,则可以使用箭头功能:https : //developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions

在您的示例中,应类似于(未经测试):

var MyGird = Class.extend({
    classMemeber1: "Some Value",
    clickEvent: () => {
        this.editor.on({
            afteredit: () => () {
                alert(this.classMemeber1);
            }
        });
    },
    // ...
});
Run Code Online (Sandbox Code Playgroud)