395 Stimmen

Löschen von Objekten in JavaScript

Ich bin ein wenig verwirrt mit JavaScript's delete Betreiber. Nehmen Sie das folgende Stück Code:

var obj = {
    helloText: "Hello World!"
};

var foo = obj;

delete obj;

Nachdem dieser Code ausgeführt wurde, obj es null aber foo bezieht sich immer noch auf ein Objekt genau wie obj . Ich vermute, dass dieses Objekt dasselbe ist, das foo wies auf.

Das verwirrt mich, denn ich hatte erwartet, dass das Schreiben delete obj das Objekt gelöscht, das obj auf die im Speicher verwiesen wurde - nicht nur auf die Variable obj .

Liegt das daran, dass der Garbage Collector von JavaScript auf einer Retain/Release-Basis arbeitet, so dass, wenn ich keine anderen Variablen hätte, die auf das Objekt zeigen, es würde aus dem Gedächtnis gelöscht werden?

(Meine Tests wurden übrigens mit Safari 4 durchgeführt).

0voto

Hank Punkte 171

Das funktioniert bei mir, obwohl es keine gute Praxis ist. Es löscht einfach alle das zugehörige Element, zu dem das Objekt gehört.

 for (element in homeService) {
          delete homeService[element];
  }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X