• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Object im strict Modus löschen

mikdoe

Moderator
Wie löscht man ein Object im strict Modus?
Ich erhalte beim Versuch mit delete input im IE diese Meldung: "Das Aufrufen des Löschvorgangs nach einem Ausdruck ist im strict-Modus nicht zulässig."

Das Script lädt per Ajax Daten vom Server in ein lokales Object und schiebt die Daten danach in ein übergreifendes Object. Das lokale Object brauche ich danach nicht mehr und möchte verhindern, dass Browser dafür trotzdem noch Speicher verbrauchen.

Oder ist meine Sorge unbegründet?

Danke
 
Wie löscht man ein Object im strict Modus?
Ich erhalte beim Versuch mit delete input im IE diese Meldung: "Das Aufrufen des Löschvorgangs nach einem Ausdruck ist im strict-Modus nicht zulässig."
mit delete entfernst du aber nur die property eines objektes. zum löschen reicht ein null-setzen aus, vorausgesetzt du erwischst alle referenzen
 
Ein input = null bräuchte noch weniger Speicher...

Aber wenn du einfach nur den Inhalt der Variable dem übergreifenden (hoffentlich nicht globalen ;)) Objekt zuweist, macht das gar keinen Unterschied, da Objekte ja per Referenz zugewiesen werden:
Code:
(function(){
	var a = {};
	function test(){
		var b = {};
		a.b = b;
		b.c = 2;
		b = null;
	}
	test();
	alert(a.b.c);
}());
 
Ein Beispiel was ich mache: data['feiertage'] = input['feiertage']
Das input wird lokal im Success Zweig des Ajax Requests erzeugt mit success: function(input) {...}
data ist ein übergreifendes aber nicht globales Objekt.
 
Wobei input eigentlich sowieso gelöscht werden sollte, wenn die success-Funktion durchgelaufen ist (wenn du darin keine weiteren Funktionen definierst)... aber Browser machen manchmal seltsame Dinge.
 
Zurück
Oben