Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

793
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda