So che questo è stato chiesto molte volte in passato, ma ancora non capisco quale sia la differenza tra quanto segue:
var Foo = function (){ //1
this.a = "";
this.b = "";
var c = ""; //private member
}
var instantiatedFoo = new Foo();
// and the same with closure
var FooSelfEncapsulated = (function (){//2
var a = "";
var b = "";
var c = "";
return function (){//3
this.a = a;
this.b = b;
}
})();
var instantiatedFoo = new FooSelfEncapsulated();
C'è qualche differenza? Quando ognuno sarebbe appropriato?
Infine, è buona norma mettere gli stessi nomi nelle funzioni anonime (1,2,3) come mostrato? O non è necessario?
var Foo = function Foo(){ //1
this.a = "";
this.b = "";
var c = ""; //private member
}
var instantiatedFoo = new Foo();
// and the same with closure
var FooSelfEncapsulated = (function FooSelfEncapsulated(){//2
var a = "";
var b = "";
var c = "";
return function FooSelfEncapsulated(){//3
this.a = a;
this.b = b;
}
})();
var instantiatedFoo = new FooSelfEncapsulated();