Frage

Gemäß der EcmaScript-Spezifikation können einige Objekteigenschaften aufgrund des internen Parameters DontDelete nicht gelöscht werden.Zum Beispiel :

var y = 5

sollte nicht löschbar sein.Aber soweit ich es überprüfen konnte, ist es so.

Hier ist ein Link im Mozilla Developer Center:https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special/delete

Irgendwelche Ideen, warum das nicht so funktioniert, wie es sollte?

War es hilfreich?

Lösung

Manchmal muss man überprüfen, was man liest.Es gibt kein DontDelete interner Parameter in der ECMA-Spezifikation (262, ed 5).Vielleicht das [Configurable] Eigentum ist gemeint?Der delete Der Operator funktioniert nicht bei Variablen oder Funktionen, sondern bei Objekteigenschaften:

var y=5, 
    z = {y:5};
delete y;
delete z.y;
alert(y);   //=> 5
alert(z.y); //=> undefined

Aus meiner Antwort geht hervor, dass dies der Fall ist ALSO Frage entstand, und eine ausgezeichnete Antwort von T.J.Crowder.

Andere Tipps

nach ES5-Tabelle 17:

Erstellungsbauch (n, d) Erstellen Sie eine neue veränderbare Bindung in einem Umweltdatensatz.Der String-Wert n ist der Text des gebundenen Namens.Wenn das Optionales boolescher Argument d ist wahr Die Bindung kann anschließend sein gelöscht.

und in 10.5 Deklaration verbindliche Instantiierung

    .
  1. für jede variabledclaration und variabledclarationnoin d im code, in Quelltext bestellen [...] II.Anruf Envs Setmelbinding Betonmethode, die dn, undefined, und streng wie die Argumente.

    was zu mir sagt, dass deklarierte Variablen nicht gelöst werden sollen.Im globalen Code ist das globale Objekt das Aktivierungsobjekt, das die Variable OBEJCT ist, so dass deklarierte Globals nicht gelöscht werden sollten.Selbstverständlich halten Browser möglicherweise nicht daran ...

generasacodicetagpre.

Show false .Dann kann nicht gelöscht werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top