Я пытаюсь построить объект в javascript, используя самовыводящие функции для установки свойств объекта - что-то вроде этого:
function Test() {
this.number = 10;
this.square = (function(test) {return test.number * test.number}(this));
}
Но когда я делаю это:
var test = new Test();
console.log(test.number + " * " + test.number + " = " + test.square);
test.number = 20;
console.log(test.number + " * " + test.number + " = " + test.square);
Вывод на консоль:
10 * 10 = 100
20 * 20 = 100
Почему это?Есть ли способ вызвать самовозбуждающуюся функцию более одного раза?Я пытаюсь использовать это, чтобы избежать проблем с областями видимости