Я следую Руководству Крокфорда по частным методам в Javascript , и я борюсь с чем-то.Я пытаюсь оптимизировать этот код
function Container(param) {
function dec() {
if (secret > 0) {
secret -= 1;
return true;
} else {
return false;
}
}
this.member = param;
var secret = 3;
var that = this;
this.service = function () {
return dec() ? that.member : null;
};
}
, определяя функции вне конструктора, чтобы новый объект функции не создавался при каждом создании нового экземпляра.
Я до сих пор не представляю, как это сделать для тех, кого он называет частными (любая помощь приветствуется).Для тех, кого он называет привилегированными методами, это то, что я пытаюсь сделать:
function Container(param) {
function dec() {
if (secret > 0) {
secret -= 1;
return true;
} else {
return false;
}
}
this.member = param;
var secret = 3;
var that = this;
}
Container.prototype.service = function() {
return dec() ? that.member : null;
};
, но если я проверяю это следующим образом
d1 = new Container("content");
d1.service();
, я получаю эту ошибку:
ReferenceError: dec is not defined
Означает ли это, что невозможно использовать преимущества закрытых / привилегированных методов, которые использует Крокфорд И оптимизировать использование памяти, связывая все экземпляры класса с одним и тем же функциональным объектом?Я надеюсь, что вы докажете, что я неправ.