Lassen Sie uns sagen, dass ich den Namespace haben,Wie Funktion A von Funktion B innerhalb desselben Namespaces aufgerufen wird?
var Namespace = {
A : function() {
alert('Hello!');
},
B : function() {
// Call A() from here, do other stuff
}
}
In diesem Namensraum, beabsichtige ich, für A eine Hilfsfunktion nach B zu sein, das heißt, A() wird nie außerhalb des Namespace aufgerufen werden. Es wird nur von den Funktionen im Namespace aufgerufen.
Was ist der beste Weg, um das Problem einer lokalen/Hilfsfunktion in einem Namespace zu beheben? Die Art, wie ich es sehe gibt es zwei Möglichkeiten:
// Method #1
var Namespace = {
A: function() {
alert('Method #1');
},
B : function() {
Namespace.A();
}
}
Namespace.B();
// Method #2
function Namespace2() {
var A = function() {
alert('Method #2');
};
this.B = function() {
A();
}
}
var ns2 = new Namespace2();
ns2.B();
Bei dem ersten Verfahren ist es hässlich und awkard Namespace.A() (wiederholt) in jeder Funktion innerhalb des Namens eingeben. Dies führt dazu, dass ich Methode 2 bevorzuge. Aber ich war neugierig, was hier am besten war.
Dies ist eine nette Lösung. Meine Frage ist, definiert Namespace seine Funktionen jedes Mal neu, wenn Sie darauf zugreifen? Wenn dies der Fall ist, wäre es ein schlechter Speicherverbrauch. – ktm5124
@ ktm5124: Nein. Die Funktion wird sofort ausgeführt und das Objekt 'self' wird dem' Namespace' zugewiesen. – Hubro
@Codemonkey in Ihrem Fall können Sie nicht mehrere 'Namespace' Objekte erstellen. – Neal