Powiedzmy mam nazw,Jak wywołać funkcję A z funkcji B w obrębie tej samej przestrzeni nazw?
var Namespace = {
A : function() {
alert('Hello!');
},
B : function() {
// Call A() from here, do other stuff
}
}
W tej przestrzeni nazw, zamierzam z A do być funkcja pomocnika do B. To znaczy, A() nie zostanie wywołana poza nazw. Będzie on wywoływany tylko przez funkcje w przestrzeni nazw.
Jaki jest najlepszy sposób rozwiązania problemu funkcji lokalnej/pomocniczej w obszarze nazw? Ja widzę to istnieją dwie możliwości:
// 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();
W pierwszej metodzie, jest brzydki i awkard wpisać Namespace.A() (wielokrotnie) w każdej funkcji w przestrzeni nazw. To prowadzi mnie do preferowania metody nr 2. Ale byłem ciekawy, jaka była najlepsza praktyka tutaj.
To dobre rozwiązanie. Moje pytanie brzmi: czy Przestrzeń nazw przedefiniowuje swoje funkcje za każdym razem, gdy uzyskujesz do niej dostęp? Jeśli tak, byłoby to złe wykorzystanie pamięci. – ktm5124
@ ktm5124: Nie. Funkcja jest uruchamiana natychmiast, a obiekt 'self' jest przypisywany do' Namespace'. – Hubro
@Codemonkey w twoim przypadku nie możesz utworzyć wielu obiektów 'Namespace'. – Neal