В последнее время я получаю в ООП javascript и все больше и больше слышу о замыканиях. После дня извращения моего мозга я теперь понимаю их *, но я все еще не вижу преимущества перед использованием объекта. Кажется, они делают то же самое, но я подозреваю, что что-то упустил.
* я думаю
Редактировать
Я только что потратил 20 минут, пытаясь написать пример, используя счетчик, написанный как объект, и счетчик, написанный как замыкание. Я пришел к выводу, что до сих пор не понимаю замыкания.
2-е редактирование
Ладно, мне удалось набрать чрезвычайно простого примера. Между этими двумя нет ничего особенного, но я нахожу объектную версию более читабельной. Почему я выбрал одно над другим?
/*** Closure way ***/
function closureCounter() {
var count = 0;
return {
increase : function() {
count++;
alert(count);
},
decrease : function () {
count--;
alert(count);
}
};
}
var myCounter = closureCounter();
myCounter.increase();
myCounter.decrease();
/*** Object way ***/
function objCounter() {
var count = 0;
this.increase = function() {
count++;
alert(count);
}
this.decrease = function() {
count--;
alert(count);
}
}
var myCounter = new objCounter();
myCounter.increase();
myCounter.decrease();