Вот абстрактный пример кода JavaScript, который иллюстрирует ситуацию, которая заставляет меня задать вопрос здесь:
function className (){
var private_variable = 0;
function privateMethod(){
// Some irrelevant code.
};
this.privilegedMethod = function (){
// Some relevant code to determine if private variable needs to be modified.
private_variable+=val; // Modifies private variable.
};
this.init = function () {
$(window).keydown(function (key) {
if (key.which == 13) {
privateMethod(); // Call to private method works fine.
this.privilegedMethod(); // 'this' references Window object,
// not this class method as expected.
}
});
};
};
У меня вопрос: есть ли альтернативный способ вызова this.privilegedMethod () с помощью ссылки на его класс, а не на объект Window, к которому он применяется?
Или, может быть, есть какие-то предложения, как я мог бы реструктурировать свой код, сохраняя функциональность - ключевые события прослушиваются глобально, метод изменения закрытой переменной доступен вне класса, но сама приватная переменная - нет.
P.S. Размещение вызова привилегированного метода внутри частного ничего не изменило.