Показать сообщение отдельно
  #4 (permalink)  
Старый 14.08.2012, 15:04
Аспирант
Отправить личное сообщение для burashka Посмотреть профиль Найти все сообщения от burashka
 
Регистрация: 15.07.2010
Сообщений: 49

Maxmaxmахimus,
охнифигасе там по ссылке обсуждения...

попытаюсь переформулировать свою фразу: привилигированными методами могут быть только методы объявленные прямо в конструкторе и принадлежащие ему. Т.е. вот такое нормально сработает и вернет 1:
function Obj()
{
    var a = 1;
    this.add = function()
    {
        a++;
    }
    this.get = function()
    {
        return a;
    }
}

var o1 = new Obj(),
    o2 = new Obj();

o1.add();
o2.get();

если же пытаться сделать привилегированные методы в прототипе, как в моем предыдущем примере, то получается хрень.

Как работают замыкания я понимаю. Видимо я не понимаю как работает прототип. В прошлом примере мы же при каждом вызове конструктора заново создаем функции прототипа? Тогда они должны по замыканию подхватить новую переменную a от нового объекта. Почему же в них всегда лежит одна и та же переменная а?
Ответить с цитированием