Diciamo che ho lo spazio dei nomi,Come chiamare la funzione A dalla funzione B all'interno dello stesso spazio dei nomi?
var Namespace = {
A : function() {
alert('Hello!');
},
B : function() {
// Call A() from here, do other stuff
}
}
In questo spazio dei nomi, intendo per A sia una funzione di supporto a B. Vale a dire, A() non verrà mai chiamato al di fuori dello spazio dei nomi. Sarà chiamato solo dalle funzioni all'interno del namespace.
Qual è il modo migliore per risolvere il problema di una funzione locale/di supporto all'interno di un namespace? Il modo di vedere ci sono due possibilità:
// 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();
Nel primo metodo, è brutto e awkard digitare Namespace.A() (ripetutamente) in ogni funzione all'interno del namespace. Questo mi porta a preferire il Metodo # 2. Ma ero curioso di sapere quale fosse la migliore pratica qui.
Questa è una bella soluzione. La mia domanda è, Namespace ridefinisce le sue funzioni ogni volta che le accedi? Se è così, sarebbe un cattivo uso della memoria. – ktm5124
@ ktm5124: No. La funzione viene eseguita immediatamente e l'oggetto 'self' è assegnato a' Namespace'. – Hubro
@Codemonkey nel tuo caso non puoi creare più oggetti 'Namespace'. – Neal