2012-08-24 13 views

Respuesta

1

Como se dice in the slide you linked us, "esta es la forma ideal de ampliar los widgets".

Ahora puede ampliar un widget sin crear un nuevo objeto widget "diferente" ("diferente" que significa "otro nombre"). Puede agregar una funcionalidad y seguir usando el mismo nombre de objeto de widget.

// An incredibly contrived example 
$.widget("ui.dialog", $.ui.dialog, { 
    close: function() { 
    if (confirm("Is it closing time?")) { 
     this._super("close"); 
    } 
    } 
}); 

Como podemos ver en el ejemplo, se puede añadir una función al objeto de diálogo, que aparecerá en los cuadros de diálogo ya existentes, es decir, no es necesario crear una nueva "extendedDialog" y luego cambiar el código existente para usar el objeto "extendedDialog". En cambio, la funcionalidad incluida ya estará disponible y funcionando allí.

+0

JavaScript no tiene clases;) – davidbuzatto

+0

¡JavaScript también no tiene herencia! :-) –

+0

Gracias por la respuesta. La pieza clave que me faltaba era que podía extender un widget compartido en un archivo fuente diferente solo para una aplicación en particular. Tipo de clases parciales similares en C#. Tiene perfecto sentido ahora. – RationalGeek

2

El motivo es redefinir el mismo widget. Entonces, le agrega nuevas capacidades, no necesita extenderlo en otro objeto.

En el ejemplo presentado en el enlace que ha enviado:

$.widget("ui.dialog", $.ui.dialog, { 
    close: function() { 
     if (confirm("Is it closing time?")) { 
      this._super("close"); 
     } 
    } 
}); 

Después de la ejecución del código anterior, todos los diálogos que se crea se abrirá un mensaje de confirmación cuando el usuario hace clic en el botón de cierre y si él/ella lo acepta, se cerrará.

1

Esto le brinda capacidades similares a las categorías en objetivo-c, puede agregar funcionalidad a una clase (widget) sin tener que cambiar el código de clase/widget en sí, o incluso tener acceso a su fuente.

Cuestiones relacionadas