Je suis un peu confus avec l' delete
opé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é, obj
is null
, mais foo
fait toujours référence à un objet exactement comme obj
. Je suppose que cet objet est le même objet que celui foo
indiqué.
Cela m'embrouille, car je m'attendais à ce que l'écriture delete obj
supprime l'objet qui obj
pointait 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 obj
supprimer l'utilisation: delete obj.helloText
puis vérifierfoo now foo is an empty object
delete
n'est pas pour supprimer des objets en javascript. delete
Est 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.helloText
et vous pouvez voir que foo
maintenant pointe vers un vide objet. "" "