У меня возникли проблемы с попыткой заставить переменные класса работать в javascript.
Я думал, что я понял модель наследования прототипа, но, очевидно, нет. Я предположил, что, поскольку прототипы будут разделяться между объектами, тогда будут и их переменные.
Вот почему этот бит кода меня смущает.
Каков правильный способ реализации переменных класса?
function classA() {};
classA.prototype.shared = 0;
a = new classA;
//print both values to make sure that they are the same
classA.prototype.shared;
a.shared;
//increment class variable
classA.prototype.shared++;
//Verify that they are each 1 (Works)
classA.prototype.shared;
a.shared;
//now increment the other reference
a.shared++;
//Verify that they are each 2 (Doesn't Work)
classA.prototype.shared;
a.shared;
UPDATE: Таким образом, кажется, что все подтверждают тот факт, что, увеличивая переменную экземпляра, мы не влияем на прототип. Это прекрасно, это то, что я документировал в моем примере, но разве это не похоже на ошибку в дизайне языка? Почему это поведение желательно? Мне кажется странным, что, когда экземпляр var является undefined, мы следуем скрытой ссылке на прототип, где получаем значение var, но копируем его в объект экземпляра.
Я также понимаю, что это не java/С++/ruby /python, это другой язык. Мне просто интересно, почему это поведение может быть хорошим.