Comment jQuery atteindre $ un alias de la fonction jQuery?
Je vais avoir un peu de mal à enveloppant ma tête autour du signe de $ étant un alias de la fonction jQuery, en particulier dans un plugin. Pouvez-vous expliquer comment jQuery atteint cet aliasing: comment définissez-vous le terme de " $ " est un alias de la fonction jQuery? C'est la première question.
Deuxièmement, pouvez-vous expliquer comment/pourquoi le code suivant fonctionne à la carte '$' à la fonction jQuery en plugin définition et pourquoi, si vous ne le faites pas, votre plugin pourraient entrer en collision avec d'autres bibliothèques qui pourrait utiliser le signe dollar?
(function( $ ){
$.fn.myPlugin = function() {
//Do your awesome plugin stuff here
};
})(jQuery);
OriginalL'auteur RBR | 2011-01-25
Vous devez vous connecter pour publier un commentaire.
Une fonction, comme n'importe quel objet en javascript, peut être affectée à une variable. Cette variable peut avoir n'importe quel nom (qui suit le JS variable règles de nommage). "$" satisfait aux règles de nommage, de sorte que la fonction jQuery est un alias de "$" pour des raisons de concision. Considérons l'exemple suivant:
Sauf si vous aimez vraiment les alertes 'mafonction'
OriginalL'auteur typeof
Il déclare simplement qu'une variable. Voir ici
jQuery lui-même est une grande autonomie de l'exécution de la fonction. Cela signifie qu'il déclare une fonction, puis l'exécute. L'intérieur de la fonction, il déclare le local
jQuery
objet qui est une fonction.Il va ensuite à droite à la fin de ce jeu de
window.jQuery = window.$ = jQuery
C'est d'installer les deux
window.jQuery
etwindow.$
localjQuery
objet. On peut définir des variables globales, en faisant d'eux des propriétés de lawindow
objet.Maintenant deux
window.jQuery
etwindow.$
à la fois point dejQuery
etant donné que les objets sont passés par référence.il actaully déclare jQuery deux fois pour un petit gain d'efficacité depuis le lors de la recherche de la variable, il n'est pas nécessaire de regarder vers le haut dans un supplément de fonction externe.
Vous pouvez utiliser deux affectations comme ça parce que
(var a = b) === b
Que d'autres ont mentionné le fait que
$
est un legimate nom de la variable et que les fonctions sont des objets de première classe, donc nous pouvons les traiter comme des objets, permet également de rendre cela possible.+1 pour une explication de la façon dont jQuery est effectivement déclaré, et par conséquent, comment il fonctionne (permettant le chaînage de méthode, par exemple)
OriginalL'auteur Raynos
Code Exact (à partir de jquery-1.4.1-vsdoc.js):
OriginalL'auteur Pavel Surmenok
Objets en JavaScript, et donc jQuery, sont des fonctions. Vous pouvez définir votre propre bibliothèque JS par la création d'une fonction avec d'autres fonctions assignées aux attributs de cette fonction unique:
D'une manière similaire jQuery fait avec une fonction nommée
jQuery
, au lieu demyLibrary
dans l'exemple ci-dessus.En Créant Des Alias
En créant des alias (ou références) est possible car le JavaScript permet de références à des fonctions à être passé autour sans avoir à faire appel à la fonction. Par exemple:
appelle la fonction de la bibliothèque, toutefois omettre les parenthèses permet de traiter avec une référence à cette fonction:
Vous pouvez ensuite appeler les références que vous avez stockées, plutôt que de l'original par la mise entre parenthèses de retour:
De la même façon jQuery peut stocker une référence à la
jQuery
fonction d'une autre variable nommée$
:Vous pouvez le voir, cette concept utilisé dans le jQuery, le code source sur github.
myLibrary.myLibraryFunction();
qui n'est pas un code valide s'il est utilisé conjointement avec l'exemple. votre myLibraryFunction est juste de la déclaration d'une fonction locale comme une variable. Il n'est pas accessible de l'extérieurLa réponse est modifiée. Cependant, "les Objets en JavaScript, et donc de jQuery sont des fonctions" a du sens ou l'autre manière autour.
var obj = {}; console.log(typeof obj); // affiche 'objet'
1. Les objets en javascript ne sont pas des fonctions. Les fonctions sont des objets. L'ensemble de la syntaxe est incorrecte. Merci de le tester avant de le poster.
La syntaxe est correcte et testé, vous êtes correct en ce qui concerne les fonctions des objets, mais le point que je faisais était que jQuery crée sa jQuery objets à l'aide d'une fonction de cette façon.
OriginalL'auteur Marcus Whybrow