En el libro Javascript las partes buenas, en la página inicial de Ch3 en objetos, se indica:¿Qué quiere decir crockford cuando dice que indefinido no puede ser un valor de propiedad?
Un objeto es un contenedor de propiedades, en que una propiedad tiene un nombre y un valor. Un nombre de propiedad puede ser cualquier cadena, incluida la cadena vacía. Un valor de propiedad puede ser cualquier valor de Javascript a excepción de indefinido.
Nota: indefinido se pone de relieve en el libro para denotar que es es un literal.
En la práctica, sin embargo, puedo hacerlo.
var a = { "name": undefined };
¿Qué hay de malo en mi entendimiento?
Él no está equivocado sobre los nombres de las propiedades, al usar la notación de corchetes, la expresión se convertirá en ToString, los nombres de propiedad pueden ser * solo cadenas *, por ejemplo: 'var o = {toString: function() {return 'foo'; }}, a = {}; a [o] = 'prueba'; alert (a ['foo']); 'en este ejemplo, acceder a 'a [o]' convertirá 'o' en string, produciendo'' foo'' como nombre de propiedad ... – CMS
Sí. Pruebe 'a ['[object DOMWindow]'] == 43'. –
Ah, ya veo ... el hechizo de cuerda no se me ocurrió. Respuesta corregida –