Pregunta

De acuerdo a la especificación EcmaScript algunas propiedades de los objetos no puede ser eliminado debido a la DontDelete parámetro interno.Por ejemplo :

var y = 5

no debe ser deletable.Pero de lo que yo era capaz de hacer el check - es.

Aquí hay un enlace en Mozilla Developer Center :https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special/delete

Alguna idea de por qué esto no funciona como debería ?

¿Fue útil?

Solución

A veces usted tiene que comprobar lo que se lee.No hay DontDelete parámetro interno en la ECMA-especificación (262, ed 5).Tal vez la [Configurable la propiedad está destinado?El delete el operador no funciona en variables o funciones, funciona en las propiedades de los objetos:

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

A partir de mi respuesta, esta ASÍ, pregunta surgió, y una excelente respuesta de T. J.Crowder.

Otros consejos

de acuerdo con la tabla 17:

createmutablebinding (n, d) Crea una nueva vinculación mutable en un Registro de medio ambiente.El valor de la cadena n Es el texto del nombre enlazado.Si el El argumento booleano opcional D es verdadero La unión es posteriormente. borrado.

y en 10.5 declaración de instancias vinculantes

  1. para cada variableClaration y VariAbledcarationnoin D en el código, en Orden de texto de la fuente hacer [...] II.Llame a Env's SetmutableBinding Método de hormigón que pasa DN, indefinido, y estricto como los argumentos.

    que me dice que las variables declaradas no deben ser eliminables.En Código Global, el objeto global es el objeto de activación que es la variable obejct, por lo que los globales declarados no deben ser delimitados.Por supuesto, los navegadores pueden no cumplir con eso ...

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

Mostrar falso .Entonces, no se puede eliminar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top