L'[objet Objet] ici est obtenu grâce à la conversion de type implicite de monObjet dans cette étape myObject[myObject] = "foo";, donc l'[objet Objet] ici est juste une chaîne convertie, mais dans l'objet comme '[objet Objet]' stocke la valeur 'foo' comme clé !
Il s'agit d'un problème de conversion implicite des noms de clés d'objet. Prenons cet exemple, expliqué en langue vernaculaire :
Il existe un objet A et je souhaite transmettre l'objet B comme nom de clé de l'objet A, mais comme tous les noms de clé de l'objet sont des chaînes, l'objet B appellera la méthode toString() et la convertira. à une chaîne "[object Object]" pour stocker les données en tant que nom de clé d'un objet A. Les données dans l'instance sont cette chaîne "foo".
Un autre point qui nécessite une attention particulière est : L'objet A et l'objet B dans votre question sont les mêmes, ce qui est très déroutant, j'ai donc déclaré une nouvelle clé mykey pour les distinguer.
var myObject = {};
var myKey={};
myObject[myKey]="foo";
console.log("[object Object]"===myKey.toString());//true
Le résultat imprimé est vrai, ce qui prouve que "[object Object]" n'est pas égal à {}, mais est égal à la chaîne renvoyée par l'objet après avoir passé la méthode toString()
Les trois lignes de code ci-dessus le prouvent encore une fois : "[object Object]" est égal à la chaîne renvoyée par l'objet après avoir passé la méthode toString()
L'[objet Objet] ici est obtenu grâce à la conversion de type implicite de monObjet dans cette étape
myObject[myObject] = "foo";
, donc l'[objet Objet] ici est juste une chaîne convertie, mais dans l'objet comme '[objet Objet]' stocke la valeur 'foo' comme clé !Il s'agit d'un problème de conversion implicite des noms de clés d'objet.
Prenons cet exemple, expliqué en langue vernaculaire :
Il existe un objet A et je souhaite transmettre l'objet B comme nom de clé de l'objet A, mais comme tous les noms de clé de l'objet sont des chaînes, l'objet B appellera la méthode toString() et la convertira. à une chaîne "[object Object]" pour stocker les données en tant que nom de clé d'un objet A. Les données dans l'instance sont cette chaîne "foo".
Un autre point qui nécessite une attention particulière est :
L'objet A et l'objet B dans votre question sont les mêmes, ce qui est très déroutant, j'ai donc déclaré une nouvelle clé mykey pour les distinguer.
La valeur clé sera automatiquement convertie en chaîne