Как решить проблему с паттерном «модуль» (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
164 +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 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 749 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир