Ce qu'est le vrai but n' $.noop() servir de jQuery 1.4?
De verser sur les notes de version relatives à jQuery 1.4, je suis venu soccer $.noop()
qui est:
Description: Une fonction vide. (ajouté en 1.4)
Vous pouvez utiliser cette fonction vide lorsque vous souhaitez passer une fonction qui ne fait rien.
Peut-être que je suis absent quelque chose de profond ici, mais ce qui est exactement une utilisation pratique de passer d'une fonction vide?
Exemples de Code apprécié.
Vous devez vous connecter pour publier un commentaire.
Cette fonction a été proposée en raison de problèmes de performance sur les systèmes embarqués lors de l'utilisation de
$.ajax
, a rapporté l'jQuery-Dev mailing list. Vous pouvez voir le fil.En gros, ils ont préféré mettre en place et utiliser cette fonction vide, plutôt que de déclarer anonyme vide toutes les fonctions de autour de.
Maintenant cette fonction est utilisé en interne dans le ajax, l'événement et décalage modules.
Vous pouvez donner un coup d'oeil à la s'engager quand il a été introduit aussi.
Si vous avez une fonction qui accepte une fonction comme paramètre, et vous n'avez pas de code à donner, vous pouvez passer
$.noop
.Je ne peux pas penser à ce genre de cas en jQuery où le paramètre n'est pas facultatif, en premier lieu, si.
À la différence de l'écriture
function(){}
, en passant$.noop
ne va pas créer une nouvelle fonction d'instance, d'économiser un peu de mémoire. Cependant, si tout ce que vous êtes en passant qu'il modifie la fonction de l'objet (par exemple,funcParam.id = 2
), en passant$.noop
va gâcher les choses.L'Exemple du Monde réel (enfin presque):
L'utiliser à la place de
function (){}
Probablement si certaines mauvaises API nécessite une fonction comme paramètre, et vous ne voulez pas faire quoi que ce soit, ce serait un cadre de prise en charge de la fabrication qui évident.
Je utiliser un couple de plugins qui nécessitent des rappels, mais pour certaines parties, je n'ai pas vraiment l'intention d'utiliser une certaine fonction de rappel. Alors, j'ai mis en fonction() {}.
noop est défini dans le jQuery source
que, il fit endroit où vous souhaitez utiliser un blanc fonction, comme l'exemple ci-dessus.
La seule explication logique est que si vous appelez une fonction qui fait quelque chose ET appelle une autre fonction, et vous voulez que le niveau supérieur de la fonction pour en faire sa chose sans faire appel à un paramètre de la fonction.
La plupart des fonctions jQuery éventuellement prendre un paramètre de la fonction, de sorte que vous n'avez pas à passer l'une dans. Il existe peut-être un ou deux, où ce n'est pas le cas, ou c'est peut-être pour aider les développeurs dans le code personnalisé qui se comporte comme cela.
Si une fonction nécessite de passer une fonction comme argument peut-être? C'est plus court à dire
do_something($.noop)
quedo_something(function(){})
.Mais pas par beaucoup...
...6 caractères...
...oui, cette fonctionnalité semble assez inutile en fait.
noop
est créé une seule fois lors de la bibliothèque jquery est chargé. foo(function(){}) crée une nouvelle fonction de l'objet à chaque fois que la ligne est exécutée. Cependant, le monde s'en fout, puisque le reste de votre code JS prendrait façon plus de temps en comparaison.Il peut être utile si vous avez une fonction qui fournit des fonctions à d'autres fonctions.
Exemple: Vous avez une Liste de données. Chaque élément dispose d'un Bouton qui fait quelque chose. Le "quelque chose" peut être différent pour chaque élément. Vous avez un "FunctionFactory" qu'il prend dans l'élément et retourne une fonction. Si vous ne voulez pas le bouton pour faire quelque chose pour quelque raison que ce soit, alors la façon la plus propre pourrait être de retour d'une fonction vide, comme ça vous savez que votre Usine retourne TOUJOURS une fonction.
Je n'ai pas d'exemple concret pour jQuery, mais je suppose que cela pourrait venir dans maniable quand utilisé dans une .chaque ou .carte de bloc.
C'est purement une commodité/remplacement pour
function(){}
dans le contexte où les rappels sont nécessaires - je ne pense pas que je vais l'utiliser n'importe quand bientôt.Je parie que le jQuery équipe a fait rire quand ils ont abandonné dans même si, sert aussi un but comique.