2012-08-24 7 views

risposta

1

Come si dice in the slide you linked us, "questo è il modo ideale per estendere i widget".

Ora è possibile estendere un widget senza creare un nuovo oggetto widget "diverso" ("diverso" che significa "un altro nome"). È possibile aggiungere una funzionalità e utilizzare ancora lo stesso nome dell'oggetto widget.

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

Come si può vedere nell'esempio, possiamo aggiungere una funzionalità per l'oggetto finestra di dialogo, che apparirà nelle finestre di dialogo già esistenti, vale a dire, non è necessario creare un nuovo "extendedDialog" e poi cambiare il codice esistente per utilizzare l'oggetto "extendedDialog". Invece, la funzionalità inclusa sarà già disponibile e funzionante.

+0

JavaScript non ha classi;) – davidbuzatto

+0

JavaScript inoltre non ha ereditarietà! :-) –

+0

Grazie per la risposta. Il pezzo chiave che mi mancava era che si potesse estendere un widget condiviso in un diverso file sorgente solo per una particolare applicazione. Un po 'come classi parziali in C#. Ha perfettamente senso ora. – RationalGeek

2

Il motivo è ridefinire lo stesso widget. Quindi, aggiungi nuove funzionalità ad esso, non è necessario estenderlo in un altro oggetto.

Nell'esempio presentato nel link che hai inviato:

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

Dopo l'esecuzione del codice di cui sopra, ogni finestra di dialogo che si crea apparirà un messaggio di conferma quando l'utente fa clic del pulsante di chiusura e se lo accetta, si chiuderà.

1

Questo offre funzionalità simili a categorie in ogg-c, è possibile aggiungere funzionalità a una classe (widget) senza dover modificare il codice classe/widget stesso o persino avere accesso alla sua origine.

Problemi correlati