Есть способ определить защищенные переменные в JavaScript:
Функция конструктора в javascript может вернуть любой объект (необязательно this ).Можно создать функцию конструктора, которая возвращает прокси-объект, который содержит прокси-методы для «реальных» методов «реального» объекта экземпляра.Это может показаться сложным, но это не так;Вот фрагмент кода:
var MyClass = function() {
var instanceObj = this;
var proxyObj = {
myPublicMethod: function() {
return instanceObj.myPublicMethod.apply(instanceObj, arguments);
}
}
return proxyObj;
};
MyClass.prototype = {
_myPrivateMethod: function() {
...
},
myPublicMethod: function() {
...
}
};
Приятно то, что создание прокси может быть автоматизировано, если мы определим соглашение для именования защищенных методов.Я создал небольшую библиотеку, которая делает именно это: http://idya.github.com/oolib/