Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

788
Views
Ayuda para entender jQuery.fn.init de jQuery ¿Por qué está init en fn?

Estaba mirando jQuery para entender mejor cómo funciona. El constructor básicamente solo llama

 new jQuery.fn.init

Me preguntaba cuál es el punto de tener el init dentro del prototipo de jQuery. ¿No tendría el mismo propósito definir init() como parte del objeto jQuery?


Básicamente, me gustaría saber por qué la función de inicio de jQuery se encuentra en jQuery.fn.init() y no jQuery.init()

¿Hay gente haciendo esto?:

 jQuery('a').eq(0).hide().init('div').slideToggle(); //?
over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

EDITAR: Al volver a leer, no creo que esto responda a su pregunta, pero podría ser útil para que alguien comprenda mejor cómo funciona jQuery de todos modos, así que lo dejo.


Lo que sucede es que jQuery() se define como jQuery.fn.init() que es otra forma de decir jQuery.prototype.init() ¡que es la función selectora! Lo que esto significa es que nadie llamaría a jQuery.fn.init() o jQuery.init() porque jQuery() ES .init() .

¿Qué?

Veamos el fragmento de código del que hablas:

 // 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 ); },

En los comentarios dice exactamente lo que dije, pero más brevemente. Pero esta es solo la copia local de jQuery... sin embargo, si vas a la línea 908 (de la versión 1.4.4) al final de la función autoejecutable verás:

 // Expose jQuery to the global object return (window.jQuery = window.$ = jQuery); })();

... lo que significa que este jQuery local se convierte en el jQuery global. ¿Asi que? Entonces... este jQuery local era en realidad jQuery.fn.init() , ¿verdad? Entonces, ¿qué es init() ? Si observa desde las líneas 100 a la 208, verá que es el método selector. ¿Qué es el método de selección? Es ese método que usas todo el tiempo para encontrar etiquetas, ids, clases... $('#id') , jQuery('.class') , $('ul li a') ... ¡la función selectora!

Entonces, nadie llamaría a jQuery.init('div') porque es una versión detallada de jQuery('div') después de esa asignación. Y recuerde que jQuery.fn es exactamente lo mismo que decir jQuery.prototype , por lo que en realidad todo lo que hace esa parte es asignar .init() como método del prototipo del objeto jQuery . Es decir, un complemento de jQuery.

Uf, eso fue un bocado. Espero que esto tenga sentido, y si alguien tiene alguna corrección en caso de que me haya informado mal en alguna parte de esta larga explicación, hágamelo saber.

over 4 years ago · Santiago Trujillo Report

0

$() es una instancia (new $()) es una instancia (new $.fn.init())

La técnica empleada por jQuery es cómo puede lograr esto. $() siempre regresa como si hubiera sido llamado con la new palabra clave. Sin embargo, en lugar de usar un cambio condicional en this referencia dentro de la function jQuery() {...} , usa un objeto de delegado externo en todos los casos. Este objeto delegado externo, jQuery.fn.init() {...} , recibe el prototipo de jQuery para que su 'tipo' de objeto sea de jQuery y que todas sus instancias sean en realidad instancias de jQuery .

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!