Задать вопрос
0rislav
@0rislav
Юрист, который рвется в программисты! =)

Как решить проблему с паттерном «модуль» (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());
  • Вопрос задан
  • 237 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
AppFA
@AppFA
Frontend developer at Yandex
Ну очевидно же, в первом случае вы создаете переменную и в памяти для неё выделяется место и ваш "модуль" существует, поэтому вы можете делать инкремент и выводить его значение. Во втором же случае вы просто вызываете метод и все, функция нигде не сохранена в памяти - она просто собирается сборщиком мусора, т.к. на неё нету ссылок больше. (При первом вызове создается замыкание и оно сохраняется, во втором же случае замыкание не сохраняется)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы