Hallo 
Mich würde interessieren, wie in JavaScript die Garbage Collection funktioniert.
Hier mal ein Beispiel:
In der Methode m übergebe ich ein Objekt. In dieser Methode arbeit ich dann aber nicht wirklich weiter mit diesem Objekt. Statt dessen lege ich keine Kopie davon an.
Hat jetzt die Garbage Collection eine Chance, o1 zu verwerfen, sobald dieser eigene Gültigkeitsbereich verlassen wird?
Oder würde das auch dann passieren, wenn ich in m gar keine Kopie vom übergebenen Objekt erzeuge?
Mich würde interessieren, wie in JavaScript die Garbage Collection funktioniert.
Hier mal ein Beispiel:
PHP:
<script>
"use strict";
class C {
constructor(id) {
this.id = id;
this.next = null;
}
m(o) {
this.next = o.clone(); // hier wird eine Kopie vom Objekt o erstellt
}
clone() {
let o = new C();
o.id = this.id;
o.next = this.next;
return o;
}
}
let o0 = new C(0);
{
// eigener Gültigkeitsbereich für o1:
let o1 = new C(1);
o0.m(o1);
// ab hier wird o1 im Hauptprogramm eigentlich nicht mehr verwendet
}
console.log(o0.next.id); // 1
</script>
Hat jetzt die Garbage Collection eine Chance, o1 zu verwerfen, sobald dieser eigene Gültigkeitsbereich verlassen wird?
Oder würde das auch dann passieren, wenn ich in m gar keine Kopie vom übergebenen Objekt erzeuge?