1263055255_application-javascript

Generar propiedades de un objeto (JSON) dinámicamente.

El caso es el siguiente: Tenemos un objeto al que queremos crearle propiedades anidadas pero nos gustaría no tener que preocuparnos de si sus parent existen. por ejemplo, si tuviera un objeto “miObjeto” y quisiera crearle una función en miObjeto.modulos.ctools.watcher, primero tendría que crear ese path. eso o podemos usar esta función:

/**
 * Genera propiedades de un objeto (JSON) dinamicamente.
 * @returns objeto extendido.
 */
function extend(base, ns_string) {
    var parts = ns_string.split('.'),
        pl, i;
    pl = parts.length;
    for (i = 0; i < pl; i++) {
        //create a property if it doesnt exist
        if (typeof base[parts[i]] == 'undefined') {
            base[parts[i]] = {};
        }
        base = base[parts[i]];
    }
    return base;
}

Y listo, ya podemos extender nuestro objeto de forma dinámica:

var miObjeto = {};
//console.log("Esto va a dar error porque 'modulos.ctools.watcher' no existe");
//console.log(miObjeto.modulos.ctools);
extend(miObjeto, 'modulos.ctools.watcher');
extend(miObjeto, 'settings.general');
miObjeto.modulos.ctools.watcher = function () {
    console.log("Soy una función!");
};
console.log(miObjeto);

Resultado:
resultado-objeto-propiedades-dinamicas
Chau!

Comentarios

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>