DontDelete-Eigenschaft von Javascript-Objekten
-
12-11-2019 - |
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?
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
.
- 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 ...
Show false .Dann kann nicht gelöscht werden.