Puis-je obtenir un nom de propriété d'objet javascript qui commence par un nombre?

var myObj = {"suppliers":[{"name":"supplier1","12m":"0.08","24m":"0.06"}]}; alert(myObj.suppliers[0].12m); 

Existe-t-il un moyen différent d'obtenir cette propriété, ou dois-je simplement ne pas utiliser une clé qui commence par un nombre?

    Vous pouvez utiliser la syntaxe suivante pour faire ce que vous décrivez en utilisant la notation de bracket :

     myObject["myProperty"] 

    La notation de support diffère de la notation de points (par exemple myObject.myProperty ) en ce sens qu'elle peut être utilisée pour accéder à des propriétés dont les noms sont illégaux. Signification illégale qu'avec une notation par points, vous êtes limité à utiliser des noms de propriétés alphanumériques (plus le souligné _ et le signe dollar $ ), et ne commencez pas par un nombre. La notation de support nous permet d'utiliser une chaîne pour accéder à une propriété et contourner ceci.

     myObject.1 // fails, properties cannot begin with numbers myObject.& // fails, properties must be alphanumeric (or $ or _) myObject["1"] // succeeds myObject["&"] // succeeds 

    Cela signifie également que nous pouvons utiliser des variables de chaîne pour rechercher et définir des propriétés sur les objets:

     var myEdgyPropertyName = "||~~(_o__o_)~~||"; myEdgyObject[myEdgyPropertyName] = "who's there?"; myEdgyObject[myEdgyPropertyName] // "who's there?"; 

    Vous pouvez en savoir plus sur la notation des points et des brackets ici, sur MDN .

    Oui, utilisez la syntaxe du support:

    alert(myObj.suppliers[0]["12m"]);

    De MDN

    Un identifiant JavaScript doit commencer par une lettre, un trait de soulignement (_) ou un signe dollar ($); Les caractères suivants peuvent aussi être des chiffres (0 à 9). Parce que JavaScript est sensible à la casse, les lettres comprennent les caractères "A" à "Z" (majuscule) et les caractères "a" à "z" (minuscules).