Di recente stavo consultando un progetto open source
JavaScript
. Il progetto è una porta dritta da un altro progetto in C language
. Per lo più utilizza metodi statici, riuniti in classi. La maggior parte delle classi sono implementate usando questo modello:
Foo = (function () {
var privateField = "bar";
var publicField = "bar";
function publicMethod()
{
console.log('this is public');
}
function privateMethod()
{
console.log('this is private');
}
return {
publicMethod : publicMethod,
publicField : publicField
};
})();
Questa è stata la prima volta che ho visto i metodi privati implementati in quel modo. Capisco perfettamente come funziona, usando un metodo anonimo. Ecco la mia domanda: questo modello è una buona pratica? Quali sono i limiti o le avvertenze attuali? Di solito dichiaro le mie classi JavaScript in questo modo:
Foo = new function () {
var privateField = "test";
this.publicField = "test";
this.publicMethod = function()
{
console.log('this method is public');
privateMethod();
}
function privateMethod()
{
console.log('this method is private');
}
};
Oltre alla sintassi, c'è qualche differenza con il pattern show sopra?