cari

Rumah  >  Soal Jawab  >  teks badan

javascript - Soalan tentang objek dalam JS

Saya melihat sebuah buku bercakap tentang objek JS hari ini, dan terdapat satu contoh yang saya tidak begitu faham

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

myObject["[object Object]"];//foo,这里的[object Object]等价于{}吗?
漂亮男人漂亮男人2793 hari yang lalu476

membalas semua(5)saya akan balas

  • PHP中文网

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


    [Objek Objek] di sini diperoleh kerana penukaran jenis tersirat myObject dalam langkah ini myObject[myObject] = "foo";, jadi di sini [Objek objek] hanyalah rentetan yang ditukar, tetapi nilai 'foo' disimpan dalam objek dengan '[objek Objek]' sebagai kunci!

    balas
    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]""

    balas
    0
  • 世界只因有你

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

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

    balas
    0
  • ringa_lee

    ringa_lee2017-05-18 10:53:26

    Ini ialah penukaran tersirat masalah nama kunci objek.
    Ambil contoh ini, dijelaskan dalam bahasa vernakular:

    Terdapat objek A, dan saya ingin memasukkan objek B sebagai nama kunci objek A, tetapi kerana semua nama kunci objek adalah rentetan, objek B akan memanggil kaedah toString() dan menukarnya kepada rentetan "[objek objek]" untuk menyimpan data sebagai nama kunci objek A Data dalam contoh ialah rentetan "foo" ini.


    Satu lagi perkara yang memerlukan perhatian khusus ialah:
    Objek A dan objek B dalam soalan anda adalah sama, yang sangat mengelirukan, jadi saya mengisytiharkan mykey baru untuk membezakannya.

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

    Hasil cetakan adalah benar, yang membuktikan bahawa "[objek Objek]" tidak sama dengan {}, tetapi sama dengan rentetan yang dikembalikan oleh objek selepas melepasi kaedah toString()


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

    Tiga baris kod di atas membuktikan sekali lagi: "[objek Objek]" adalah sama dengan rentetan yang dikembalikan oleh objek selepas melepasi kaedah toString()

    balas
    0
  • 大家讲道理

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

    Nilai kunci akan ditukar secara automatik kepada rentetan

    balas
    0
  • Batalbalas