Javascript unterstützt Namespaces nicht nativ und erfordert Problemumgehungen.
Wenn wir eine JavaScript-Bibliothek erstellen, spielt der Namespace eine wichtige Rolle. Wir können die verstreuten JavaScript-Dateien (*.js), aus denen die JavaScript-Bibliothek besteht, im Namespace kapseln, ohne globale Funktionen oder Klassen zu definieren. Person, die in diesem Kapitel häufig vorkommt, kann beispielsweise als Teil der Bibliothek in einen geeigneten Namensraum gekapselt werden:
Code 5-13:
Kopieren Sie den Codecode wie folgt:
var com = {};
com.anyjava = {};
com.anyjava.Person = Funktion(Name) {
//Private Mitglieder
var _name = Name;
//Accessor
this.getName = function() {
return _name;
};
this.setName = function(name) {
_name = Name;
};
};
//Prototyp
com.anyjava.Person.prototype = {
eat:function() {
alarm(this.getName() + „ isst etwas.“);
},
sleep:function() {
alarm(this.getName() + „ schläft.“);
},
walk:function() {
alarm(this.getName() + „ läuft.“);
}
};
var dirk = new com.anyjava.Person("Dirk");
dirk.eat();
Aus Code 5-13 erhalten wir einen Namespace, der eher den Gewohnheiten von Java-Entwicklern entspricht, und beim Instanziieren des Person-Objekts müssen wir auch unseren Befehlsraumpfad angeben.
Hier ist ein kleiner Tipp: Wenn Sie eine von anderen entwickelte JavaScript-Bibliothek verwenden und über eine relativ vollständige Namespace-Planung verfügen, wird es Ihnen möglicherweise langweilig, jedes Mal lange Namespaces zu schreiben. Wenn Sie beispielsweise die von mir entwickelte JavaScript-Bibliothek unter dem Namensraum com.anyjava.control.ui verwenden, möchten Sie wahrscheinlich nicht var xxx = new com verwenden viele Male. .anyjava.control.ui.XXX(). Durch die Angabe von Namespace-Aliasnamen können wir Code schreiben, der sich weniger wiederholt, wie in Code 5-14 gezeigt, eine weitere Methode zur Instanziierung von Personen in Code 5-13:
Code 5-14:
Kopieren Sie den Codecode wie folgt:
var ns = com.anyjava;
var dirk = new ns.Person("Dirk");
dirk.eat();
Das Letzte, was ich erläutern werde, ist ein Problem, auf das bei der Verwendung von Namespaces geachtet werden muss. Beim Schreiben einer JavaScript-Bibliothek können Namespace-Deklarationsanweisungen in den meisten Fällen gleichzeitig an mehreren Stellen in einer JavaScript-Datei oder in mehreren JavaScript-Dateien erscheinen. Eine JavaScript-Spracheigenschaft besteht jedoch darin, dass die zuletzt deklarierte Variable die zuvor deklarierte Variable überschreibt Bei Variablen mit demselben Namen müssen wir auf das Problem wiederholter Deklarationen achten. Das heißt, es wird empfohlen, bei jeder Deklaration eines Namespace-Objekts zunächst festzustellen, ob das Namespace-Objekt bereits vorhanden ist. 15:
Code 5-15:
Kopieren Sie den Codecode wie folgt:
if (typeof com.anyjava == "undefiniert") var com.anyjava = {};
Auf diese Weise können wir sicherstellen, dass das Objekt „com.anyjava“ nur einmal deklariert wird.