javascript - Soalan tentang objek dalam JS
漂亮男人
漂亮男人 2017-05-18 10:51:26
0
5
414

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]等价于{}吗?
漂亮男人
漂亮男人

membalas semua(5)
Ty80


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

Ty80
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]""
世界只因有你
myObject[myObject]这里发生隐型转换,{}转换为字符串,调用toString()方法
({}).toString()//"[object Object]"
左手右手慢动作

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

大家讲道理

Nilai kunci akan ditukar secara automatik kepada rentetan

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!