从嵌套函数访问类成员

时间:2010-10-16 17:13:12

标签: javascript oop


我在javascript中有这个课程

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

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

2 个答案:

答案 0 :(得分:22)

您需要通过在变量中存储clickEvent [1] 来保存对调用this函数的对象的引用。由于闭包,它将在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);
            }
        });
    },
    // ...
});

[1] this operator in javascript(注意:'this'不是运营商)

答案 1 :(得分:2)

如果您编写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);
            }
        });
    },
    // ...
});