Maison  >  Questions et réponses  >  le corps du texte

javascript - Questions sur les objets en JS

J'ai vu un livre parlant des objets JS aujourd'hui, et il y avait un exemple que je n'ai pas bien compris

var myObject = {};
myObject[myObject] = "foo";

myObject["[object Object]"];//foo,这里的[object Object]等价于{}吗?
漂亮男人漂亮男人2711 Il y a quelques jours418

répondre à tous(5)je répondrai

  • PHP中文网

    PHP中文网2017-05-18 10:53:26


    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é !

    répondre
    0
  • PHP中文网

    PHP中文网2017-05-18 10:53:26

    var myObject = {};
    console.log(myObject.toString());//[object Object]
    
    myObject[myObject] = "foo";
    
    console.log(myObject["[object Object]"]);//foo,这里的[object Object]等价于{}吗?
    
    console.log(myObject.toString());//[object Object]
    
    for(var i in myObject){
        console.log(i);//[object Object]
    }
    
    //从以上结果可以看出:不管这个对象是什么,转成字符串后都是"[object Object]""

    répondre
    0
  • 世界只因有你

    世界只因有你2017-05-18 10:53:26

    myObject[myObject]这里发生隐型转换,{}转换为字符串,调用toString()方法
    ({}).toString()//"[object Object]"

    répondre
    0
  • ringa_lee

    ringa_lee2017-05-18 10:53:26

    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()


    console.log(myObject[myKey.toString()]);//foo
    console.log(myObject["[object Object]"]);//foo
    console.log(myObject[myKey.toString()]===myObject["[object Object]"]);//true
    

    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()

    répondre
    0
  • 大家讲道理

    大家讲道理2017-05-18 10:53:26

    La valeur clé sera automatiquement convertie en chaîne

    répondre
    0
  • Annulerrépondre