Допустим, у меня есть следующее:
var foo = (function(){
var bar = 0;
return {
getBar: function(){
return bar;
},
addOne: function(){
bar++;
},
addRandom: function(rand){
bar += rand;
}
}
})();
И у меня есть следующее:
var foo2 = function(){
var bar = 0;
this.getBar = function(){
return bar;
};
this.addOne = function(){
bar++;
};
this.addRandom = function(rand){
bar += rand;
}
};
Единственная разница в выполнении функций - это new
?
alert(foo.getBar()); //0
foo.addOne();
foo.addRandom(32);
alert(foo.getBar()); //33
var foo2_obj = new foo2;
alert(foo2_obj.getBar());//0
foo2_obj.addOne();
foo2_obj.addRandom(32);
alert(foo2_obj.getBar());//33
Они обе выводят одно и то же.
Так в чем же разница в долгосрочной перспективе?
Что может сделать одна, чего не может другая?
Fiddle Demo of the above: http://jsfiddle.net/maniator/YtBpe/