Si nos fijamos en la última fuente de jQuery en http://code.jquery.com/jquery-latest.js vemos lo siguiente:¿Por qué jQuery hace esto en su implementación de función de constructor?
var jQuery = function(selector, context) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init(selector, context);
}
Mi comprensión de la nueva palabra clave en Javascript está esencialmente JavaScript pasa a la función de un objeto vacío {}
y la función fija cosas en él a través de this.blah
.
También a mi entender new
difiere de .call
/.apply
etc. en que el objeto de retorno también tiene el prototipo configurado para el de la función. Por lo tanto, el valor de retorno debe tener un prototipo que sea el mismo que jQuery.prototype.init.prototype
(o jQuery.fn.init.prototype
). Sin embargo, por lo que veo, su prototipo está configurado en jQuery.prototype
, por lo tanto, todos los comandos disponibles para trabajar en el conjunto.
¿Por qué es esto? ¿Qué me estoy perdiendo en mi comprensión?