Wenn wir uns die neuesten jQuery Quelle bei http://code.jquery.com/jquery-latest.js betrachten, sehen wir folgendes:Warum macht jQuery das in seiner Konstruktorfunktion Implementierung?
var jQuery = function(selector, context) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init(selector, context);
}
Mein Verständnis des neuen Keywords in Javascript ist im Wesentlichen geht JavaScript die Funktion ein leeres Objekt {}
und setzt die Funktion Material auf ihm über this.blah
.
Auch von meinem Verständnis new
unterscheidet sich von .call
/.apply
etc .. darin, dass das Rückkehrobjekt hat auch den Prototyp auf das der Funktion festgelegt. Daher sollte der Rückgabewert einen Prototyp haben, der der gleiche ist wie jQuery.prototype.init.prototype
(oder jQuery.fn.init.prototype
). Allerdings, was ich sehe, ist sein Prototyp auf jQuery.prototype
so alle verfügbaren Befehle gesetzt, um am Set zu arbeiten.
Warum ist das? Was fehlt mir in meinem Verständnis?