Question

Selon la spécification ECMAScript, certaines propriétés d'objets ne peuvent pas être supprimées en raison du paramètre interne DontDelete. Par exemple :

var y = 5

ne devrait pas être supprimé. Mais d'après ce que j'ai pu vérifier - c'est le cas.

Voici un lien au Mozilla Developer Center:https://developer.mozilla.org/en/javascript/reference/Operators/Special/delete

Des idées pourquoi cela ne fonctionne pas comme il se doit?

Était-ce utile?

La solution

Parfois, vous devez vérifier ce que vous lisez. Il n'y a pas DontDelete Paramètre interne dans la spécification ECMA (262, ed 5). Peut-être le [Configurable] la propriété est signifiée? La delete L'opérateur ne fonctionne pas sur les variables ou les fonctions, il fonctionne sur les propriétés d'objet:

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

De ma réponse, ceci So Question a émergé et une excellente réponse de TJ Crowder.

Autres conseils

Selon ES5 Tableau 17:

CreatemutableBinding (n, d)Créez une nouvelle liaison mutable dans un enregistrement d'environnement. La valeur de chaîne n est le texte du nom lié. Si l'argument booléen facultatif D est vrai, la liaison peut être supprimée par la suite.

et dans 10,5 instanciation contraignante de la déclaration

  1. Pour chaque rapport variable et variabledeclarationnoin d dans le code, dans l'ordre du texte source do [...] ii. Appelez la méthode de béton de béton de béton de bind de setmutmut en passant, non définie et stricte comme arguments.

Ce qui me dit que les variables déclarées ne devraient pas être supprimées. Dans le code global, l'objet global est l'objet d'activation qui est la variable OBEJCT, donc les globaux déclarés ne doivent pas être supprimés. Bien sûr, les navigateurs peuvent ne pas y adhérer ...

var y = 5
alert(delete (y));

Spectacle faux. Ensuite, je ne peux pas être supprimé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top