Ich bin ein bisschen verwirrt mit dem JavaScript- delete
Operator. Nehmen Sie den folgenden Code:
var obj = {
helloText: "Hello World!"
};
var foo = obj;
delete obj;
Nachdem dieser Code ausgeführt wurde, obj
ist null
, foo
bezieht sich aber immer noch auf ein Objekt genau wie obj
. Ich vermute, dieses Objekt ist das gleiche Objekt, foo
auf das gezeigt wurde.
Das verwirrt mich, weil ich erwartet habe, dass beim Schreiben delete obj
das Objekt gelöscht wird, obj
auf das im Speicher verwiesen wird - nicht nur die Variable obj
.
Ist das , weil von JavaScript Garbage Collector arbeitet an einer behalten / Release - Basis, so dass , wenn ich keine andere Variablen habe auf das Objekt zeigen, es würde aus dem Speicher entfernt werden?
(Meine Tests wurden übrigens in Safari 4 durchgeführt.)
var obj = { helloText: "Hello World!" }; var foo = obj; delete obj;
Objekt wird nicht gelöscht überprüfen obj
löschen Verwendung: delete obj.helloText
und dann überprüfenfoo now foo is an empty object
delete
ist nicht für Objekte in Javascript zu löschen. delete
Verwendet wird , einen Objektschlüssel zum Entfernen In Ihrem Fall. var obj = { helloText: "Hello World!" }; var foo = obj; delete obj;
, Wird das Objekt nicht gelöscht wird , überprüfen. Als obj
nächstes laufen. delete obj.helloText
Und Sie können sehen , dass foo
nun auf ein leeres Objekt. "" "