Funktion Scoping bietet die einzige Privatsphäre in JavaScript.Datenschutz in JavaScript
So ist die kanonische:
function Ctor(dep1, dep2) {
this._dep1 = dep1;
this._dep2 = dep2;
}
Ctor.prototype.foo = function() {
// use this._dep1/2...
}
... ist problematisch, dass es keine Verkapselung für die injizierten Abhängigkeiten bietet.
Eine Alternative (wenn auch etwas anders in Bezug auf die Lage von foo
), die echte Kapselung bietet könnte sein:
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
}
Aber ich selten, dieses Muster sehen. Gibt es einen guten Grund, letzteres nicht zu verwenden?
bis zu einem gewissen Grad, die Unterstützung für Symbol Eigenschaften werden Dinge besser machen, wie es möglich sein wird o Erstellen Sie Eigenschaftsschlüssel, die garantiert nicht mit anderen Schlüsseln kollidieren. Sie sind jedoch immer noch nicht vollständig "privat". – Pointy
Vote für den Abschluss - warum ?! – Ben