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

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

Войти через центр авторизации
Похожие вопросы
16 мая 2024, в 23:36
200000 руб./за проект
16 мая 2024, в 23:10
12000 руб./за проект