Question

Si vous créez un élément dans une fonction comme:

function makeDomElement()
{
   var createdElement = document.createElement('textarea');
}

Et vous ne rajoutez pas partout dans les fonctions DOM à savoir via .appendChild, il reste encore ne en mémoire? Alors, auriez-vous à faire

function makeDomElement()
{
   var createdElement = document.createElement('textarea');
   delete createdElement;
}

Je suis curieux:)

Était-ce utile?

La solution

Il varie d'un navigateur à l'autre mais le mot-clé javascript delete n'a rien à voir avec la méthode de createElement DOM. Il n'y a pas besoin d'utiliser delete.

Qu'est-ce qui va se passer est que la référence à l'élément actuellement détenu dans le createdElement va se ramasse-miettes. Maintenant, dans le cas d'IE qui signifie que l'élément aura son compte de référence est tombé à 0 il va se détruire et libérer sa mémoire. D'autres navigateurs font les choses différemment généralement les éléments dans les DOM sont eux-mêmes des objets les déchets collectés et seront supprimés au cours de la même (ou peut-être un spécifique DOM) cycle de GC.

Had l'élément été ajouté au document, puis dans le cas d'IE il y aurait une autre référence ajouté à l'élément ainsi quand la référence en createdElement l'objet est retiré de l'élément aurait encore un compte de référence non nul et continuer à exister .

Dans le cas d'autres navigateurs où les éléments eux-mêmes sont des ordures collectées l'élément ne serait pas perçue depuis le collecteur verrait dans le graphique des objets liés au document.

Autres conseils

Une fois la fonction se termine, il n'y a plus de référence à l'objet, à savoir si le garbage collector fonctionne correctement, il faut recueillir (il y a un bug IE qui empêche les objets avec des références circulaires à recueillir si les nœuds DOM sont impliqués).

En outre, votre code est cassé comme des variables locales ne peuvent pas être supprimés. Essayer de le faire jetteront même une erreur de syntaxe en mode strict ES5

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top