2010-05-28 5 views
1

Je parcourais le code source de jQuery. Je n'arrive pas à comprendre la stratégie d'enveloppement de l'objet jQuery. En particulier, ce que je ne comprends pas provient de la première ligne.Organisation de l'objet jQuery

  1. Quelle est la fonction de conteneur sans nom la plus externe? Pourquoi est-ce nécessaire?

  2. Pourquoi le conteneur est-il anonyme?

  3. Quelle est la nécessité pour les plus à l'extérieur '(' parantheses?

+2

Voir cette question :) http://stackoverflow.com/questions/2716069/how-does-this-javascript-jquery-syntax-work-function-window-undefined –

+0

Cette question concerne principalement le paramètre 'undefined' . mais il semble y avoir quelques liens là-bas ... – sonofdelphi

+0

ahh, le 'undefined'. c'est curieux, n'est-ce pas? Je ne suis pas sûr de ce que ça fait. Peut-être est-ce un moyen de s'assurer qu'il n'y a qu'un seul élément dans les arguments? Donc, si quelqu'un se réfère à 'arguments', il n'a que la valeur' window'? Juste une supposition, donc pourrait être totalement faux. – Tauren

Répondre

1
  1. La fonction externe crée une étendue variable IIRC.
  2. La parenthèse extérieure encapsulent la fonction. Je ne pensent qu'ils sont réellement nécessaires.Ils aident juste la compréhension
  3. La fonction est anonyme car il est appelé immédiatement:

    (function(w) {...})(window) 
    
1
  1. La parenthèse extérieure empêche la pollution de l'objet global de la fenêtre.

  2. Le conteneur ne devrait pas être anonyme, mais il n'y a aucune raison de le nommer et de polluer les globals.

  3. Les parens externes sont requis car ils doivent être exécutés immédiatement. Le (window) le fait fonctionner immédiatement, et sans les parens, cela ne fonctionnera pas.

Cette article est une très bonne lecture et vous aidera probablement à comprendre.