me he encontrado con frecuencia los sitios que ponen toda su javascript dentro de una estructura de "espacio de nombres" en la línea de¿Existe una forma "concisa" de hacer espacios de nombres en JavaScript?
namespaces = { com : { example: { example.com's data} }
Pero establecer esto de forma segura con respecto a otros marcos de espacios de nombres parece requerir una cantidad relativamente fuerte de código (definido como> 2 líneas). Me preguntaba si alguien sabe de una forma concisa de hacer esto. y si hay una forma relativamente estándar/consistente para estructurarlo? p.ej. ¿El espacio de nombres "com" está directamente conectado al objeto global, o está conectado a través de un objeto de espacio de nombres?
[Editar: Vaya, obviamente {com = { ... } }
no lograría nada cerca de lo que pretendía, gracias a Shog9 por señalarlo. : D]
Aunque, ahora 'com_example' va a ser parte del objeto global. Supongamos que agregamos muchos más objetos 'com_something_else',' com_etc', y seguimos contaminando el nivel raíz del objeto global. ¿No sería preferible si tuviéramos solo un objeto 'com' en global donde todos los demás objetos fueran agregados? Además, no queremos sobrescribir ningún objeto existente, ¿qué sucede si se utilizan varias bibliotecas? – Peter
@ Peter: si hay varias bibliotecas que definen los mismos símbolos, tendrás problemas sin importar nada; es por eso que las bibliotecas como jQuery llegan a tales extremos para meter todo en un solo objeto global. Mi punto no era que * debías * usar múltiples objetos de nivel superior, simplemente que fingir espacios de nombres con objetos profundamente anidados realmente no te compra nada en lugar de nombres de objetos locos. Vea mi último ejemplo para un método más práctico: use un solo nombre global que probablemente no colisione, y luego una técnica que permita que pedazos dispares de código le agreguen objetos. – Shog9