nahkar
@nahkar
frontend developer

Где хранится результат работы конструктора ?

Всем привет подскажите, есть крнструктор со статическим свойством couter который когда создает новый объект получает число увеличеное на 1 Вопрос а где храниться в новь созданом объекте это число тоесть результат работы функции конструктора Вопрос может и наивен но уже ни как не могу найти ответ
var Gadget = (function(){
     var counter = 0;
     return function(){
         console.log(counter++);
     }
 }());

o1 = new Gadget()  //1
o2 = new Gadget() //2
o3 = new Gadget() //3
  • Вопрос задан
  • 2430 просмотров
Решения вопроса 1
lexxpavlov
@lexxpavlov
Программист, преподаватель
Данные хранятся в локальной переменной функции. Обычно к ней нельзя получить доступ извне функции, и при окончании работы функции локальные переменные удаляются. Но за счёт того, что создано замыкание, локальная переменная попала в окружение замыкания, тем самым увеличив счётчик обращения к переменной. И поэтому при окончании работы функции переменная не удалена, и может быть использована внутри замыкания (замыкание - это функция).
Вот очень хорошая статья, которая рассказывает про замыкания, а заодно ещё и про прототипы:
Особенности работы или «За что я люблю JavaScript».
Если интересно про прототипы, то вот отличная статья про это.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
icelaba
@icelaba
Знаю и умею всё
Почитайте про closure
например тут https://developer.mozilla.org/en-US/docs/Web/JavaS...

Тогда ответ сам придет - хранится в окружении замыкания :-)
closure environment
Ответ написан
Ваш ответ на вопрос

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

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