Здесь стоит упомянуть интересную схему: функция-конструктор 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/