= { ... }

lunes, mayo 08, 2006

Un modelo para objetos JSON

Una vez introducidos a lo que es JSON, lo que resultaría de utilidad es saber como usarlo para el desarrollo de nuestros scripts.

Siguiendo este modelo nuestro código quedara ordenado por objetos. Dentro de cada objeto primero añadimos los campos que necesitemos, seguido la función init que inicializa todos los campos que lo necesiten, y por último el grueso del funcionamiento asociado al objeto.

A continuación se muestra un posible modelo para trabajar con esta notación:

var obj = {
a : Object,
b : Array,
c : false,
d : null,
init : function() {
// inicializar las variables del objeto
a = document.getElementById("estado");
this.run();
},
run : function() {
// ejecutar el codigo que queramos
}
}
function initializer() {
obj.init();
// añadir el resto de inicializadores de otros objetos aqui
}
//se puede usar cualquier codigo, body.onload,
//YAHOO.event, Prototype.js para asociar
//la función initializer al evento de carga.
addEvent(window,'load',inializer);



Hay que hacer notar que podemos pasar de nuestro scripts ordenados por funciones a JSON de forma rápida. En general los cambios son minimos. Además tenemos la ventaja de que las funciones declaradas dentro de un objeto solo seran visibles desde el objeto o a partir del objeto. De esta forma podemos tener dos objetos distintos con la misma función en su interior y comportamientos distintos. Hemos conseguido scope o ámbito o visibilidad para nuestras funciones!

Un pequeño apunte sobre la función addEvent, esta función se encarga de asociar al objeto window, en el evento onload la funcion initializer. Esta extraida del common.js de dustindiaz.com. También se recomienda echar un vistazo a las librerias que ha publicado YAHOO, para la gestión de eventos, son simplemente espectaculares! Pero si quereis un script ligero y fácil de usar os recomiendo el common.js de Dustin Diaz, donde tambien podreis encontrar varias funciones muy útiles. Tengo pendiente otro post en el que destripar este pequeño compendio de funciones JavaScript.

newuni @ delicious