Dontdelete Property of JavaScript Objects
-
12-11-2019 - |
Domanda
Secondo la specifica di ECMascript alcune proprietà oggetti non possono essere cancellate a causa del parametro interno DONTDelete.Ad esempio:
var y = 5
non dovrebbe essere cancellabile.Ma da quello che sono stato in grado di controllare - è.
Ecco un link al Mozilla Developer Center: https://developer.mozilla.org/en/javascript/reference/oPeratators/ Speciale / Elimina
Qualche idea perché questo non funziona come dovrebbe?
Soluzione
A volte devi controllare cosa leggi.Non esiste un parametro interno DontDelete
nella specifica ECMA (262, ED 5).Forse la proprietà [Configurable
] è pensata?L'operatore delete
non funziona su variabili o funzioni, funziona su proprietà oggetto:
var y=5,
z = {y:5};
delete y;
delete z.y;
alert(y); //=> 5
alert(z.y); //=> undefined
.
Dalla mia risposta, questo così domanda emerse e unRisposta eccellente da TJCrowder.
Altri suggerimenti
Secondo la Tabella ES5 17:
.CreativeMutableBinding (N, D) Creare un nuovo legame mutabile in un Record ambientale.Il valore della stringa n è il testo del nome vincolato.Se la L'argomento booleano opzionale D è vero Il rilegatura è può essere successivamente cancellato.
e in 10.5 dichiarazione vincolante istanziazione
..
- per ogni variabilitazione e variabileClarationNoin D nel codice, in Ordine di testo sorgente [...] II.Chiama Ev's SetMUtableBinding Metodo in calcestruzzo che passa DN, indefinito, e rigoroso come gli argomenti.
che mi dice che, che dichiarava le variabili non dovrebbero essere cancellati.Nel codice globale, l'oggetto globale è l'oggetto di attivazione che è l'obejct variabile, quindi i globali dichiarati non devono essere cancellabili.Naturalmente, i browser potrebbero non aderire a questo ...
var y = 5
alert(delete (y));
.
Show false .Quindi, non può essere cancellato.