Доступ к членам класса из вложенных функций - PullRequest
7 голосов
/ 16 октября 2010


у меня есть этот класс в JavaScript

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

как мне получить доступ к classMemeber1 изнутри afteredit ...
Спасибо

Ответы [ 2 ]

23 голосов
/ 16 октября 2010

Вам нужно сохранить ссылку на объект, вызывающий функцию 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);
            }
        });
    },
    // ...
});

[1] этот оператор в javascript (примечание: 'this' не является оператором)

2 голосов
/ 31 марта 2017

Если вы пишете 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);
            }
        });
    },
    // ...
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...