В ECMAScript нет такой вещи, как приват
var Klass = function() {
var privateFn = function() { return 15 };
this.publicFn1 = function() { return privateFn()+1; };
}
privateFn
- это локальная переменная, к которой publicFn1
имеет доступ из-за правил области видимости (и замыканий).
Вы не можете получить доступ privateFn
вне области действия Klass
Если вы хотите получить доступ к privateFn
вне области действия функции Klass
, то вам необходимо открыть его через прокси-сервер или внедрить его дальше по цепочке областей действия.
Прокси будет что-то вроде
this._private = function() {
return privateFn;
}
Внедрение дальше в цепочку прицелов было бы что-то вроде
var Klass = function() {
var privateFn = function() { return 15 };
this.publicFn1 = function() { return privateFn()+1; };
this.uid = Klass.uid++;
Klass.instances[this.uid] = {
privateFn: privateFn
};
}
Klass.uid = 0;
Klass.instances = [];
k.publicFn2 = function() { return Klass.instances[this.uid].privateFn()+2 }
Оба безобразны.
Причина, по которой они уродливы, в том, что вы подражаете классическому ОО
Пожалуйста, используйте вместо этого прототип OO.
Бессовестный прототип OO-штекер