Как решить проблему с паттерном «модуль» (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());
Проблема здесь заключается в том, что каждый раз вызывается новый экземпляр объекта Test() при обращении к Test().inc() и Test().cur(). Поэтому переменная i в каждом новом экземпляре будет равна 0, и увеличение ее на 1 не будет сохраняться.
Чтобы исправить это, можно сохранить экземпляр Test() в переменной и затем вызывать методы inc() и cur() на этой переменной:
Проблема здесь заключается в том, что каждый раз вызывается новый экземпляр объекта 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().