Nel libro Javascript le parti buone, nella pagina di apertura del Ch3 su oggetti, essa afferma:Cosa significa crockford quando dice che un indefinito non può essere un valore di una proprietà?
Un oggetto è un contenitore di proprietà, in cui una proprietà ha un nome e un valore. Un nome di proprietà può essere qualsiasi stringa, inclusa la stringa vuota. Un valore di proprietà può essere qualsiasi valore Javascript tranne che non definito.
Nota: indefinito è evidenziato nel libro per indicare che è è un letterale.
In pratica, tuttavia, sono in grado di farlo.
var a = { "name": undefined };
Cosa c'è di sbagliato nella mia comprensione?
Non ha sbagliato sui nomi delle proprietà, quando usa la notazione delle parentesi, l'espressione sarà convertita in ToString, i nomi delle proprietà possono essere * solo stringhe *, ad esempio: 'var o = {toString: function() {return 'foo'; }}, a = {}; a [o] = 'test'; alert (a ['foo']); 'in questo esempio, l'accesso a' a [o] 'convertirà' o' in stringa, producendo ''foo'' come nome di proprietà ... – CMS
Sì. Prova 'a ['[oggetto DOMWindow]'] == 43'. –
Ah, capisco ... il cast delle corde non mi è venuto in mente. Risposta corretta –