Scoping funkcji zapewnia jedyną prywatność w JavaScript.Prywatność w JavaScript
Więc kanoniczna:
function Ctor(dep1, dep2) {
this._dep1 = dep1;
this._dep2 = dep2;
}
Ctor.prototype.foo = function() {
// use this._dep1/2...
}
... jest problematyczne, ponieważ oferuje nie enkapsulacji dla wstrzyknięto zależności.
Alternatywnym (aczkolwiek nieznacznie różnią się pod względem lokalizacji foo
), który oferuje prawdziwy enkapsulacji może być:
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
}
ale rzadko zobaczyć ten wzór. Czy istnieje dobry powód, aby nie używać tego ostatniego?
Do pewnego stopnia wsparcie dla Symbolu właściwości poprawią to, co będzie możliwe o utwórz klucze właściwości, które gwarantują, że nie kolidują z innymi kluczami. Jednak nadal nie są w pełni "prywatne". – Pointy
Głosuj za blisko - dlaczego ?! – Ben