2012-01-02 10 views
25

È consentito?Oggetto Javascript - Chiave che inizia con il numero, permesso?

myObj = {}; 
myObj['4a56546s6d'] 

o il tasto deve iniziare con una lettera come:

myObj = {}; 
myObj['x4a56546s6d'] 

Posso mescolare entrambi piace:

myObj = {}; 
myObj['x4a56546s6d'] 
myObj['4a56546s6d'] 

chiedo perché quarantina (ad esempio un ID in HTML) deve iniziare con una lettera Al momento ho il third version e il FireBug segna i tasti (a partire da un numero) blu.

+2

Se non era permesso, si otterrebbe un errore. –

risposta

47

È possibile utilizzare qualsiasi tasto se si utilizza [string] per accedere alla chiave, anche la chiave con lo spazio. Tutti questi sono validi:

myObj['key with space'] 
myObj['12345'] 

Ma se si desidera utilizzare dot . all'operatore di accedere alla chiave, quindi il tasto deve essere un identificatore valido il che significa che non possono iniziare con un numero o contenere spazi.

6

Vedere questa pagina: https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Core_Language_Features#Variables

identificatore Un JavaScript deve iniziare con una lettera, underscore (_), o il simbolo del dollaro ($); i caratteri successivi possono anche essere cifre (0-9). Poiché JavaScript fa distinzione tra maiuscole e minuscole, le lettere includono i caratteri da "A" a "Z" (maiuscolo) ei caratteri da "a" a "z" (lettere minuscole).

si può usare in questo modo, ma non sarà in grado di accedere ai dati utilizzando myObj.4a56546s6d perché a partire un identificatore con un numero non è permesso.

0

Se la chiave (nome della proprietà) è una stringa letterale, è perfettamente valido avere una cifra come primo carattere.

Vedere le risposte per this per ulteriori informazioni sulle chiavi valide in JS.

16

Per operatore punto si può accedere ai valori da chiavi che non contengono caratteri dello spazio o speciali, parole che iniziano dal numero (cioè, quelli che non possono essere utilizzati come ad es. Nomi variabili) altrimenti è possibile ottenere qualsiasi riferimento a loro piace come chiavi nell'array associativo.

È possibile utilizzare come chiave tutto ciò che si desidera ma ricordare che la chiave sarà una rappresentazione in formato stringa di ciò che viene inserito. Chiarificazione: verrà chiamato toString().

sguardo:

var myObj = {}; 

myObj[ 3 ] = "key is 3"; 
alert(myObj[ "3" ]); //alerts "key is 3" because (3).toString() is "3" 
//but an error will thrown when accessing by myObj.3 

myObj[ {} ] = "key is {}" 
alert(myObj["[object Object]"]) // alerts "key is {}" because ({}).toString() is "[object Object]" 

È possibile ignorare toString() metodo, ad esempio:

Object.prototype.toString = function(){ return "object"} 

a = {}; 
a[ {} ] = "whatever"; 
alert(a["object"]); // alerts "whatever" because as now toString() returns "object" from each created object 
+12

Esempi molto illustrativi, +1. Ma ragazzi, non ignorare i metodi 'Object.prototype' a casa. È troppo pericoloso. –

Problemi correlati