Propriété netDelete des objets JavaScript
-
12-11-2019 - |
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?
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
- 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é.