Я читал, что использование Object.prototype
для присоединения функций к пользовательским объектам JavaScript более эффективно, чем "традиционный" метод this.foo = function()
.Проблема, с которой я столкнулся - это сфера.Я хочу, чтобы эти общедоступные методы имели доступ к закрытым переменным объекта.В итоге я сделал следующее:
function Foo(){
var id = 5;
Foo.prototype.bar = function(){
alert(id);
};
}
var x = new Foo();
x.bar();
Я вложил объявление прототипа в определение объекта.Это работает и, кажется, решить проблему.Есть ли причина НЕ делать этого?Есть ли лучший или более стандартный способ сделать это?
ОБНОВЛЕНИЕ Основываясь на некоторых полученных мною ответах, думаю, мне нужно упомянуть, что я полностью осознаю, что естьнет понятия private
переменной в JavaScript.Я использую термин private
здесь, означающий недоступность вне текущей области, потому что это легче сказать и написать, и я предполагаю, что любой, кто пытается ответить на этот вопрос, будет знать, что я имел в виду, используя термин private
.