Ich bin ein bisschen verwirrt mit dem JavaScript- deleteOperator. Nehmen Sie den folgenden Code:
var obj = {
helloText: "Hello World!"
};
var foo = obj;
delete obj;
Nachdem dieser Code ausgeführt wurde, objist null, foobezieht sich aber immer noch auf ein Objekt genau wie obj. Ich vermute, dieses Objekt ist das gleiche Objekt, fooauf das gezeigt wurde.
Das verwirrt mich, weil ich erwartet habe, dass beim Schreiben delete objdas Objekt gelöscht wird, objauf 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 objlöschen Verwendung: delete obj.helloTextund dann überprüfenfoo now foo is an empty object
deleteist nicht für Objekte in Javascript zu löschen. deleteVerwendet 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 objnächstes laufen. delete obj.helloTextUnd Sie können sehen , dass foonun auf ein leeres Objekt. "" "