Hallo,
mit delete soll man zwar laut selfhtml ein objekt löschen können - aber das scheint mir nicht innerhalb des objektes selber zu gelingen.
Das ist ein Denkfehler Deinerseits. Ein _Innerhalb_ eines _Objektes_ gibt es nicht. Ein Objekt ist eine Entität, die im Arbeitsspeicher instanziert ist. Sie begründet sich auf eine Klasse oder, in JavaScript, auf einen Prototyp. Die Funktion myObj() ist der Prototyp Deines Objekts meinObjekt. Du kannst also mit
delete meinObjekt;
Dein Objekt löschen. Du kannst aber nicht im Prototyp eine Methode verankern, die alle auf diesem Prototyp basierenden Objekte löscht. Wolltest Du das erreichen?
Das Konzept des Destructors ist nicht OOP. Es ist C++-Denken. Auch Java kennt keinen Destructor. Objekte, die nicht mehr benötigt werden, werden einfach beendet (auf NULL gesetzt, Streams geschlossen, Threads finalized). Ein garbage collector kümmert sich dann um das Entfernen aus dem Arbeitsspeicher.
function myObj() {
function loeschen() {
alert(delete this);
}
function meldung() {
alert(this.blubb);
}
this.blubb = "blubb";
this.blah = meldung;
this.destruct = loeschen;
}meinObjekt = new myObj();
meinObjekt.blah(); // alert mit "blubb" erscheint
meinObjekt.destruct(); // alert gibt "true" aus, delete sollte
// also erfolgreich gewesen sein
IE gibt hier, meiner Meinung nach richtigerweise, einen Fehler aus.
meinObjekt.blah(); // alert mit "blubb" erscheint immer noch,
// obwohl es meinObjekt doch jetzt gar nicht mehr geben sollte?
Doch. Das Objekt "meinObjekt" wurde nicht gelöscht.
viele Grüße
Axel