Je suis un peu confus avec l' deleteopérateur de JavaScript . Prenez le morceau de code suivant:
var obj = {
helloText: "Hello World!"
};
var foo = obj;
delete obj;
Une fois que ce morceau de code a été exécuté, objis null, mais foofait toujours référence à un objet exactement comme obj. Je suppose que cet objet est le même objet que celui fooindiqué.
Cela m'embrouille, car je m'attendais à ce que l'écriture delete objsupprime l'objet qui objpointait en mémoire - pas seulement la variable obj.
Est-ce parce que le garbage collector de JavaScript fonctionne sur une base de conservation / libération, de sorte que si je n'avais pas d'autres variables pointant vers l'objet, il serait supprimé de la mémoire?
(Au fait, mes tests ont été effectués dans Safari 4.)
var obj = { helloText: "Hello World!" }; var foo = obj; delete obj;objet n'est pas supprimé vérifier objsupprimer l'utilisation: delete obj.helloTextpuis vérifierfoo now foo is an empty object
deleten'est pas pour supprimer des objets en javascript. deleteEst utilisé pour supprimer une clé d'objet. Dans votre cas var obj = { helloText: "Hello World!" }; var foo = obj; delete obj;, l'objet n'est pas supprimé. Vérifiez obj. Ensuite, exécutez delete obj.helloTextet vous pouvez voir que foomaintenant pointe vers un vide objet. "" "