En ce qui concerne la fonction d'utilité jQuery jquery.data () la documentation en ligne indique:
"La méthode jquery.data () nous permet de Joindre des données de tout type à dom éléments d'une manière qui est à l'abri de références circulaires et donc de fuites de mémoire. " p> blockquote>
Pourquoi utiliser: p>
xxx pré> peut résulter d'une fuite de mémoire dans quelles conditions - de sorte que je devrais utiliser p>
xxx pré> devrais-je toujours préférer .Data () au lieu d'utiliser des expurances dans tous les cas? p>
(J'apprécierais si vous pouvez fournir un exemple pour comparer les différences) p> < p> Merci, P>
Burak Ozdogan P> P>
3 Réponses :
Je suis sûr que vous ne pouvez pas introduire une fuite de mémoire avec une valeur primitive comme Je suggère de lire le contenu de la référence de référence circulaire à http: // msdn. Microsoft.com/en-us/Library/BB250448 . Encore mieux, lisez tout: -) p>
Cela étant dit, je pense que la plupart des gens recommandent de l'utiliser en utilisant des expurances si possible (et cela est généralement possible). Utilisation des données Chaque fois que vous appelez 52 code>. Les fuites de mémoire avec des expurances se produisent généralement lorsqu'une valeur est appliquée contenant un objet avec une référence à l'élément. P>
JQUERY () CODE> est une bonne alternative, dans tous les cas.
DATA () CODE> Fournit une méthode qui va comme suit: p>
DATA () CODE> Pour extraire les données, JQuery accède à la propriété EXPARTO pour l'ID unique et utilise cet ID pour récupérer les données de l'objet de cache. Étant donné que l'expansion contient une valeur primitive et n'a pas d'attachement à l'objet de mise en cache, aucune références circulaire ne se produit. P>
Merci Andy E ''s Head (cela ressemble à quelque chose de futurama! :)) Informations très utiles que vous avez fournies.
@burak: Je suis un gros fan futurama :-)
dise que vous avez des variables Dites que vous le mettez dans une fonction (dont vous ne stockez pas): p> NodeOne code> et
NODETWO code>, quels nœuds de référence. P>
jQuery.data(nodeOne, 'item', nodeTwo);
jQuery.data(nodetwo, 'item', nodeOne);
Attendez, est votre exemple d'échantillon de code de JQuery's .data () code> fait ou ne laisse pas
nœudsone code> et
nodetwo code> obtenir des ordures recueillies?
Pourrait Stackoverflow.com/Questtions/1056098/... répondez à votre question?
Puis-je deviner? C'est-à-dire que cela souffre de ce mal pendant une décennie. Mais Afaik, cela ne se produit que lorsque vous supprimez / détachez un élément DOM pendant que les manutentionnaires d'événements sont toujours définis.
@jweyrich: tandis que c'est-à-dire que c'est-à-dire une célèbre notoriété pour les fuites de mémoire, d'autres navigateurs ne sont pas à l'abri.
@Andy très vrai! Mais je ne pouvais pas résister, désolé.