En
este artículo (remy sharp's b:log) implementan una interesantísima función que permite a partir de una cadena namespace (nombres de objetos anidados separados por puntos como com.thinkweb2.projects.namespace) crear los objetos anidados adecuados sin tener que especificar explícitamente cada objeto:
// creando la estructura anidada manualmente es engorroso
var com = {
thinkweb2: {
projects: {
namespace: 'una propiedad anidada'
}
}
}
com.thinkweb2.projects.namespace // => una propiedad anidada
La función es la siguiente y
no tiene dependencias.
String.prototype.namespace = function(separator) {
var ns = this.split(separator || '.'), p = window;
for (var i = 0; i < ns.length; i++) {
p = p[ns[i]] = p[ns[i]] || {};
}
};
Hola,
ResponderEliminarEn el articulo al que haces alusión alguien comenta:
la variable 'i' del contador debe declararse local 'var i', de otra forma 'i' tendría ámbito (alcance) global - exactamente lo que namespaces debería prevenir.
Hola Juan. Tienes razón. Texto editado.
ResponderEliminar