De ce que j'ai appris, JavaScript permet à n'importe quel type d'une valeur d'une clé à l'intérieur d'un objet comme: mais permet seulement certains types de certains types pour les clés telles que la chaîne et les entiers :
{
"chaîne": "chaîne",
123: "Integer"
} p> Je suis tombé sur ceci lorsque j'ai écrit le code ci-dessous, cela et la clé a fini par être: [objet objet] code> p>
{"[object Object]":"value"}
3 Réponses :
Si vous essayez d'exécuter ceci, il produira code> valeur code> et si vous imprimez le type de clé, il sera String CODE>
let a = {}
let b = {}
b.name = {name: "name"}
a[b.name] = "value"
console.log(a['[object Object]'])
for (key in a) {
console.log(typeof key);
//-> "string"
}
Vous mélangez deux concepts différents. Les objets JSON et JavaScript - bien que similaires ne sont pas les mêmes. Vous pouvez lire sur La différence entre JSON et l'objet littéral Notation . P>
Et pourquoi affiche-t-il la clé comme [objet objet]? p> blockQuote>
Parce que les clés ne peuvent être que des cordes ou des symboles. Toute autre valeur est forcée à une chaîne (par exemple en appelant la méthode
Tostring code> de la valeur si disponible).
({}). Tostring () code> retourne "[objet d'objet]" `. p>
Si vous souhaitez utiliser des objets comme touches, vous pouvez utiliser un Carte . P>
La clé d'un objet ne peut être qu'une chaîne ou un symbole. Lorsque vous mettez un objet dans [] code>, la représentation de la chaîne de cet objet est utilisée comme clé.
let a = {}
let b = {}
b.name = "name"
a[b.name] = "value"
console.log(JSON.stringify(a))
Est-ce que cela répond à votre question? Les clés des objets JavaScript ne peuvent être que des chaînes?