Métodos encadenables y otras mejoras a Prototype

Visita este artí­culo en http://www.estadobeta.com/2006/08/30/metodos-encadenables-y-otras-mejoras-a-prototype/

Por Ismael en Desarrollo, artículos, javascript

Prototype.js, la librería javascript que hemos discutido en EstadoBeta, recientemente incluye actualizaciones que la hacen aún más util. Estas comprenden mejoras al objeto Form, que agrupa métodos para manejar elementos de formulario, y optimizaciones para Ajax.

Pero la actualización más atractiva son los métodos encadenables para manipular el DOM. Anteriormente, si querías aplicar una serie de modificaciones a un elemento, tenías que hacerlo así:


$("mi-elemento").addClassName(”nueva-clase”);
$(”mi-elemento”).setStyle({color:”red”});
$(”mi-elemento”).show();

Ahora, todos los métodos de Element que modifican elementos del DOM (”métodos destructivos”) retornan el elemento. Esto quiere decir que se pueden encadenar las llamadas a los métodos sobre un objeto. El ejemplo anterior se reduce a lo siguiente.


$("mi-elemento").addClassName(”nueva-clase”).setStyle({color:”red”}).show();

Los métodos iran modificando el elemento de izquierda a derecha, como es de esperarse.

Las actualizaciones también incluyen una sintaxis más intuitiva para los Observadores de Eventos. Lo que antes se declaraba así:


Event.observe("mi-elemento","click",una_funcion);

Ahora se puede declarar así:


$("mi-elemento").observe("click", una_funcion);

Los Observadores también retornan el elemento y por lo tanto son encadenables con otros métodos de Element


$("mi-elemento").addClassName("nueva-clase").observe("click",una_funcion);

Los métodos encadenables eran una de las virtudes de jQuery, otra librería Javascript que está ganando popularidad y que a su vez empezó basandose en las ideas de Prototype. Algo que decir sobre la sana competencia del mundo Open Source.

Link: A Flurry of Prototype Updates, en EncyteMedia.

prototype,javascript

4 comentarios para “Métodos encadenables y otras mejoras a Prototype”

  1. GravatarAppleboy Dice:

    Y, según leo, han arreglado el bug de las llamadas Ajax no asíncronas (¿síncronas?). Me queda la enorme duda: ¿De dónde se puede bajar la nueva versión?

  2. GravatarDiego Dice:

    Vaya, descubrieron el mundo con los métodos encadenados. Como bien dices jQuery lo tenía desde el principio y, además, se puede implementar en cualquier lenguaje. Yo lo hago con Delphi que, al igual que Javascript, tiene la palabra reservada “with” que aún simplifica más las cosas.

    De todas formas “prototype” está muy bien.

    Un saludo.

  3. GravatarMejoras en Prototype - aNieto2K Dice:

    […] Prototype ha realizado una serie de mejoras en su código para conseguir la posibilidad de encadenamiento de funciones entre otras mejoras. […]

  4. GravatarIsmael Dice:

    Appleboy: el fuerte de Prototype nunca ha sido la documentación (lamentablemente). La última versión estable la encuentras en el sitio oficial de Prototype, pero la versión de desarollo (1.5rc) con todas las mejoras hay que checkearla via SVN (subversion) desde el sitio de desarrollo de Ruby on Rails.
    Para comodidad de los lectores también la pueden bajar directamente desde este link.

    Diego: cierto, los métodos encadenables no son ninguna maravilla técnica. Basta con que los métodos retornen el objeto modificado. Aún así, es bueno tenerlos como parte de Prototype y no tener que implementarlos uno mismo.
    Sin conocer jQuery en profundidad, creo que está muy bien pero prefiero el modelo de clases y herencia de Prototype para aplicaciones más grandes, además de ser requisito para Scriptaculous.