javascript - 關於JS中的物件問題
漂亮男人
漂亮男人 2017-05-18 10:51:26
0
5
416

今天看到書上講到JS的對象,有個範例不是很明白

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

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

全部回覆(5)
Ty80


這裡的[object Object]是在myObject[myObject] = "foo";這一步的時候由於myObject的隱式類型轉換得來的,所以這裡的[object Object]只是轉換來的一個字符串而已,只是在對像中以'[object Object]'為鍵存放了'foo'這個值!

Ty80

雷雷

世界只因有你

雷雷

左手右手慢动作

這是物件鍵名的隱式轉換問題。
就拿這個例子來說,用大白話解釋就是:

有A對象,想將B對像作為A對象的一個鍵名傳遞進來,但是因為對象的所有鍵名都是字串,所以B對象就會呼叫toString()方法,轉換成一個字串"[ object Object]",來作為一個A物件的一個鍵名存放數據,實例中的資料就是這個"foo"字串。


另外特別要注意的一點是:
你的問題中的A對象和B對像是同一個,這點很迷惑人,所以我新聲明了一個mykey來區分。

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

印出結果為true,證明"[object Object]"等於的不是{},而是等於物件經過toString()方法後傳回的字串


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

上述程式碼三行程式碼再證明:"[object Object]"等於物件經過toString()方法後傳回的字串

大家讲道理

key值會自動轉成string的

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!