Rumah > Soal Jawab > teks badan
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]等价于{}吗?
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!
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]""
世界只因有你2017-05-18 10:53:26
myObject[myObject]这里发生隐型转换,{}转换为字符串,调用toString()方法
({}).toString()//"[object Object]"
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()