Я думал, что начинаю понимать JavaScript довольно хорошо, но явно нет. Позвольте мне объяснить мою проблему на примере. Сначала у меня есть следующий модуль:
var Test = function() {
var counter = 0;
function init() {
alert(counter);
}
return {
counter: counter,
init: init
}
};
Затем создаю 2 экземпляра:
var test1 = new Test();
var test2 = new Test();
Теперь я обновляю переменную счетчика (поскольку она является общедоступной) и делает некоторые предупреждения. Пока все хорошо.
alert(test1.counter); // Alerts 0
test1.counter = 5;
alert(test2.counter); // Alerts 0
test2.counter = 10;
alert(test1.counter); // Alerts 5
Теперь, наконец, я говорю следующее:
test1.init(); // Alerts 0
test2.init(); // Alerts 0
Это бит, который я не понимаю. Почему это предупреждение 0? Я думал, что первое предупреждение будет 5, а второе 10.
Я был бы признателен, если бы кто-нибудь мог объяснить, как это работает, или указать мне в правильном направлении. Благодаря