La funzione scoping offre l'esclusiva privacy in JavaScript.Privacy in JavaScript
Quindi la canonica:
function Ctor(dep1, dep2) {
this._dep1 = dep1;
this._dep2 = dep2;
}
Ctor.prototype.foo = function() {
// use this._dep1/2...
}
... è problematica in quanto non offre alcuna incapsulamento per le dipendenze iniettati.
Un'alternativa (seppur leggermente diverso in termini di posizione di foo
) che offre reale incapsulamento potrebbe essere:
function factory(dep1, dep2) {
return {
foo: partial(foo, dep1, dep2), // or use bind (partial could be a library fn for partial application)
};
}
function foo(dep1, dep2) {
// use dep1/2
}
ma raramente vedere questo modello. C'è una buona ragione per non usare quest'ultimo?
in una certa misura, il supporto per Symbol le proprietà miglioreranno le cose, come sarà possibile t o creare chiavi di proprietà che non siano in conflitto con altre chiavi. Tuttavia, non sono ancora completamente "privati". – Pointy
Vota per chiudi - perché ?! – Ben