Как решить проблему с паттерном «модуль» (JavaScript)? let Test = function() {
let i = 0;
return {
inc() {
i++;
},
cur() {
return i;
}
};
};
let myTest1 = Test();
myTest1.inc();
console.log(myTest1.cur());
myTest1.inc();
console.log(myTest1.cur());
myTest1.inc();
console.log(myTest1.cur());
let myTest2 = Test();
myTest2.inc();
console.log(myTest2.cur());
//Вот этот способ не работает. Почему?
//Test().inc();
//Test().inc();
//Test().inc();
//console.log(Test().cur());

21 Авг 2019 в 07:02
190 +1
0
Ответы
1

Проблема здесь заключается в том, что каждый раз вызывается новый экземпляр объекта Test() при обращении к Test().inc() и Test().cur(). Поэтому переменная i в каждом новом экземпляре будет равна 0, и увеличение ее на 1 не будет сохраняться.

Чтобы исправить это, можно сохранить экземпляр Test() в переменной и затем вызывать методы inc() и cur() на этой переменной:

let test = Test();
test.inc();
test.inc();
test.inc();
console.log(test.cur());

Таким образом, переменная i будет сохранять свое состояние между вызовами методов inc() и cur().

20 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир