Javascript no admite espacios de nombres de forma nativa y requiere soluciones alternativas.
Cuando creamos una biblioteca de JavaScript, el espacio de nombres juega un papel importante. Podemos encapsular los archivos JavaScript dispersos (*.js) que componen la biblioteca de JavaScript en el espacio de nombres sin definir funciones o clases globales. Por ejemplo, Persona, que aparece muchas veces en este capítulo, se puede encapsular en un espacio de nombres adecuado como parte de la biblioteca:
Código 5-13:
Copie el código de código de la siguiente manera:
var com = {};
com.anyjava = {};
com.anyjava.Persona = función(nombre) {
//Miembros privados
var _nombre = nombre;
//Accesor
this.getName = función() {
devolver _nombre;
};
this.setName = función (nombre) {
_nombre = nombre;
};
};
//prototipo
com.anyjava.Person.prototype = {
comer:función() {
alert(this.getName() + "está comiendo algo.");
},
dormir: función() {
alert(this.getName() + "está durmiendo.");
},
caminar: función() {
alert(this.getName() + "está caminando.");
}
};
var dirk = nuevo com.anyjava.Person("Dirk");
puñal.comer();
Del Código 5-13, obtenemos un espacio de nombres que está más en línea con los hábitos de los desarrolladores de Java, y al crear una instancia del objeto Persona, también debemos especificar nuestra ruta del espacio de comando.
Aquí hay un pequeño consejo. Si está utilizando una biblioteca JavaScript desarrollada por otros y con una planificación de espacios de nombres relativamente completa, es posible que se canse de escribir espacios de nombres largos cada vez. Por ejemplo, si está utilizando la biblioteca JavaScript que desarrollé, en el espacio de nombres com.anyjava.control.ui, hay muchos controles de interfaz de usuario extendidos que desea usar, supongo que no desea escribir var xxx = new com. muchas veces.anyjava.control.ui.XXX(). Al especificar alias de espacios de nombres, podemos escribir código menos repetitivo, como se muestra en el Código 5-14, otro método para crear instancias de Persona en el Código 5-13:
Código 5-14:
Copie el código de código de la siguiente manera:
var ns = com.anyjava;
var dirk = new ns.Person("Dirk");
puñal.comer();
Lo último que explicaré es un problema al que se debe prestar atención cuando se utilizan espacios de nombres. Al escribir una biblioteca JavaScript, en la mayoría de los casos las declaraciones de espacio de nombres pueden aparecer en varias ubicaciones de un archivo JavaScript al mismo tiempo, o en varios archivos JavaScript. Sin embargo, una característica del lenguaje JavaScript es que la última variable declarada sobrescribirá la variable declarada previamente. Las variables con el mismo nombre requieren que prestemos atención al problema de las declaraciones repetidas, es decir, cada vez que declaramos un objeto de espacio de nombres, se recomienda determinar primero si el objeto de espacio de nombres ya existe, como se muestra en el Código 5-. 15:
Código 5-15:
Copie el código de código de la siguiente manera:
if (typeof com.anyjava == "indefinido") var com.anyjava = {};
De esta manera podemos asegurarnos de que el objeto "com.anyjava" solo se declare una vez.