Non c'è magia qui, Constructor
(grande C) come una proprietà non ha alcun significato particolare. Questa è semplicemente una convenzione.
Fondamentalmente si utilizza una classe come struttura da definire la funzionalità
var Alert = function() {};
Alert.prototype.foo = function() {};
ed esponendo attraverso un non-classe come l'interfaccia.
$('#blurf').alert();
Quindi questa è semplicemente una convenzione plugin utile. Ogni plugin jQuery definisce se stesso come metodo primario sull'oggetto $.fn
, che ha accesso ai costruttori necessari tramite la chiusura. Ma il costruttore stesso è privato di quella chiusura. Assegnarlo a $.fn.myplugin.Constructor
fa semplicemente che il costruttore accessibile ad altro codice, che consente di avere un controllo avanzato se necesary
var myAlert = new $.fn.alert.Constructor('Hello World'); // or something
Ora è possibile qualcosa di simile a questo, invece:
$.fn.alert.Alert = Alert;
Questo è, soggettivamente, brutto e ridondante. E ora dovresti tradurre o indovinare il nome della proprietà che porta al costruttore. Se dici che ogni plugin è implementato con una singola classe, e ogni costruttore di classi può essere trovato a $.fn.myplugin.Constructor
, allora hai un'interfaccia coerente per accedere alle classi dietro ciascun plugin.
Quindi, ancora una volta, questo è solo convenzione, niente di troppo speciale.
fonte
2012-05-10 00:44:03