Показать сообщение отдельно
  #1 (permalink)  
Старый 03.03.2015, 00:42
Новичок на форуме
Отправить личное сообщение для Вячеслав Александрович Посмотреть профиль Найти все сообщения от Вячеслав Александрович
 
Регистрация: 26.02.2015
Сообщений: 7

Можно ли заменить замыкание объектом?
Доброго времени суток!
Перечитал кучу умных букав и никак не въеду как работают замыкания. Я понял, что они хранят переменные в локальной области видимости, только не пойму разницу между замыканием и объектом, в котором эта же переменная хранится как свойство. Предложенные в учебных пособиях задачи у меня получалось реализовать с помощью объектов, мне так понятнее что и как работает.
Пример задачи с данного сайта:
function makeCounter() {
  var currentCount = 0;
     
  return function() {
    currentCount++;
    return currentCount;
  };
}
 
var counter = makeCounter();
 
// каждый вызов увеличивает счётчик
counter();
counter();
alert( counter() ); // 3

То, что удалось сделать мне:
var counter = {
	i: 0,
	count: function() {
		return ++counter.i;
	}
}
counter.count();
counter.count();
alert(counter.count());// 3

Работает точно так же, только мне так понятнее и при этом есть возможность обнулять счетчик или менять его значение, присвоив counter.i нужное значение. И код при этом короче.
Подскажите, пожалуйста, есть ли разница и в чем.
Ответить с цитированием