2010-03-16 6 views
1

J'ai un widget JavaScript hébergé sur des sites Web. Ce widget suit l'état dans un certain nombre de variables dans son espace de noms local. De plus, il attache des auditeurs à plusieurs événements, tels que le mouvement de la souris.Ai-je besoin de détruire explicitement les objets JavaScript lors du déchargement de la fenêtre?

Dois-je détruire explicitement les deux variables de suivi d'état et détacher les écouteurs d'événement lors du déchargement de la fenêtre? Ou est-ce correct de compter sur le navigateur pour faire un bon travail de nettoyage après que l'utilisateur quitte la page qui héberge mon widget?

Répondre

4

Une fois que vous vous débarrassez de la fenêtre, vous vous débarrassez de tout ce qui s'y trouve. Par conséquent, pas besoin de faire votre propre collecte des ordures. Si un certain navigateur a une fuite de mémoire, ce n'est pas votre faute et votre de facto garbage collection ne serait probablement pas utile de toute façon.

+0

Veuillez donner une raison pour le déclassement d'une réponse! –

+0

@Bilal: Dans un monde parfait, ils le feraient. C'était juste une fusillade au volant, et malheureusement ce genre de chose arrive de temps en temps sur ce tableau. – Robusto

+0

Dans un monde parfait, les fuites de mémoire n'existeraient pas. Malheureusement, nous (et plus important encore: nos utilisateurs) utilisons toujours des navigateurs qui fuient la mémoire. Je pense que vous devriez au moins faire un peu de collecte manuelle des ordures: http://javascript.crockford.com/memory/leak.html (pas de downvote de ma part, BTW). –

Questions connexes