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?

È stato utile?

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

.
    .
  1. 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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top