Я читал Closures и у него есть пример следующего закрытия.Javascript Closure vs Javascript OO
var makeCounter = function() {
var privateCounter = 0;
function changeBy(val)
{
privateCounter += val;
}
return
{
increment: function()
{
changeBy(1);
},
decrement: function()
{
changeBy(-1);
},
value: function()
{
return privateCounter;
}
}
};
var counter1 = makeCounter();
var counter2 = makeCounter();
alert(counter1.value()); /* Alerts 0 */
counter1.increment();
counter1.increment();
alert(counter1.value()); /* Alerts 2 */
counter1.decrement();
alert(counter1.value()); /* Alerts 1 */
alert(counter2.value()); /* Alerts 0 */
мне было интересно, в чем разница и преимущества/недостатки между этой крышкой и следующим кодом, которые производят те же результаты.
var makeCounter = function() {
var privateCounter = 0;
function changeBy(val)
{
privateCounter += val;
};
this.increment= function()
{
changeBy(1);
};
this.decrement= function()
{
changeBy(-1);
};
this.value= function()
{
return privateCounter;
};
};
var counter1 = new makeCounter();
var counter2 = new makeCounter();
alert(counter1.value()); /* Alerts 0 */
counter1.increment();
counter1.increment();
alert(counter1.value()); /* Alerts 2 */
counter1.decrement();
alert(counter1.value()); /* Alerts 1 */
alert(counter2.value()); /* Alerts 0 */
Выберите свой код, нажмите кнопку '{}' в панели инструментов на ** отступом на 4 пробела **. Вот как вы отмечаете код как код здесь. Прочитайте остальную часть справки по редактированию, пока вы на ней. Это сделало бы это для вас, но я не собираюсь убирать все эти
. – deceze