EDIT: Rileggendo I Non penso che questo risponda alla tua domanda, ma potrebbe essere utile per qualcuno che abbia una migliore comprensione di come funziona jQuery, quindi me ne sto andando.
Che cosa sta succedendo è che jQuery()
si definisce come jQuery.fn.init()
che è un altro modo per dire jQuery.prototype.init()
che è la funzione di selezione! Ciò significa che nessuno chiamerebbe jQuery.fn.init()
o jQuery.init()
perché jQuery()
IS .init()
!
Cosa? sguardo
Let il pezzo di codice che stiamo parlando:
// Define a local copy of jQuery
var jQuery = function(selector, context) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init(selector, context);
},
Nei commenti si dice proprio quello che ho detto, ma più brevemente. Ma questa è solo la copia locale di jQuery ... però, se si va alla linea 908 (versione 1.4.4) alla fine della funzione self-executing si vedrà:
// Expose jQuery to the global object
return (window.jQuery = window.$ = jQuery);
})();
.. .questo significa che questo locale jQuery
diventa il jQuery
globale. Così? Quindi ... questo locale jQuery
era in realtà jQuery.fn.init()
giusto? Allora, qual è init()
? Se guardi dalle righe 100 a 208 vedrai che è il metodo di selezione. Qual è il metodo di selezione? È quel metodo che usi sempre per trovare tag, ID, classi ... $('#id')
, jQuery('.class')
, $('ul li a')
... la funzione di selezione!
Quindi nessuno chiamerebbe mai jQuery.init('div')
perché è una versione prolissa di jQuery('div')
dopo quell'assegnazione. E ricorda che lo jQuery.fn
è esattamente lo stesso che dire jQuery.prototype
quindi tutto ciò che sta facendo è assegnare locome metodo del prototipo dell'oggetto jQuery
. OSSIA un plugin jQuery.
Phew, era un boccone. Spero che questo abbia senso, e se qualcuno ha delle correzioni nel caso in cui abbia disinformato in qualsiasi parte di questa lunga spiegazione, per favore fatemelo sapere.
+1 per un semplice sforzo. Quindi c'è qualche ragione particolare per usare il prototipo come ** opposto ** solo sull'oggetto jQuery stesso. È più veloce o qualcosa del genere (non riesco a immaginare che lo sia) –
Non ho una buona risposta a questa domanda, mi dispiace. Posso risolvere una risposta, ma la certezza su questo è al di sopra del mio grado di paga. – mVChr
idem +1. non ho mai veramente capito cosa stesse facendo quel primo pezzo di jquery. grazie, mvchr! – hellatan