Anfang Versuchsaufbau:
test = new Foo();
alert(test.bar); // Ich würde undefined erwarten, aber test wurde nicht gelöscht, also kommt "bar".
function Foo() {
this.bar = "bar";
this.deleteMyself = deleteObj;
this.deleteMyself(); // Dieses Objekt soll sich mit dieser Methode selbst löschen
}function deleteObj() {
return delete this; // this bezieht sich hier nicht auf deleteObj, sondern auf Foo, um das mal gleich vorwegzunehmen. Die Funktion gibt false zurück, "this" kann also nicht gelöscht werden. Wieso nicht? Wenn ich return delete this.bar; schreibe, wird test.bar tatsächlich gelöscht und alert(test.bar); gibt undefined aus.
}Ende Versuchsaufbau.
Das ist klar, du kannst delete nur auf die Variabel anwenden die das Objekt erzeugt. Das Objekt selber kann sich nicht löschen, ist aber auch nicht nötig.
auch nach newX = null?
newX = null funktioniert, aber das kann ich innerhalb des Objekts oder iner seiner Methoden nicht anwenden, weil das Fenster ja nicht unbedingt newX heißen muss.
Also doch keine globale Variabel. Du musst die Variabel löschen die mit dem Objekt verbunden ist, also in deinem Fall ist es sinnvoll ein neues Fenster nicht unmittelbar zu erzeugen, sondern dies in einem Objekt zu kapseln, das alle Referenzen auf deine Objekte vorhält und dann dort das jeweilige Objekt zu löschen, einen anderen Weg gibt es nicht.
Struppi.
Javascript ist toll (Perl auch!)