2009-02-11 7 views
5

J'ai un code JS qui génère l'objet suivant,Mots réservés Javascript?

return { 
    "type": "some thing", 
    "width": 2, 
    "colour": "#AA12BB", 
    "values": [2,3,4] 
} 

La création de c'est pas un problème. En écrivant le test de la méthode qui retourne ceci a un problème d'accès aux attributs width/type: les assertions suivantes échouent (cela conduit à une erreur d'exécution/syntaxe, qui disparaît quand je les commente).

assertEquals('some thing', jsonObj.type); 
assertEquals(2, jsonObj.width); 

tout

assertEquals('#AA12BB', jsonObj.colour); 

passe

Puisque je ne peux pas changer les noms clés pour ce que je fais, est-il possible d'accéder à ces valeurs?

Répondre

3

Essayez ceci:

assertEquals('some thing', jsonObj["type"]); 
assertEquals(2, jsonObj["width"]); 
+0

À votre santé! –

0

notation dot ne fonctionne pas avec des mots réservés, tels que "type". Dans ce cas, vous devez utiliser la notation de tableau.

Liste de Mozilla de Java Script Reserved words.

+2

Le type ne semble pas être un mot réservé, mais c'est la manière correcte d'accéder à ces propriétés. – zedd45

3

Votre exemple fonctionne bien pour moi. 'Width' et 'type' sont et non mots réservés en JavaScript (bien que 'typeof' soit).

+0

Bizarre ... vous avez raison à propos d'eux ne pas être des mots réservés ... Mais pour une raison quelconque sur FF3.0.6 il a échoué pour moi .. CSS? Pyromane? Hmm, pas sûr –

+2

Quelle est exactement l'erreur que vous obtenez? – bobince

Questions connexes