2017-08-29 55 views
0
var foo = {unique_prop: 1}, bar = {unique_prop: 2}, object = {}; 
object[foo] = 'anu'; 
console.log(object[bar]); 

上述代碼輸出「anu」。屬性名稱上的Javascript toString方法

toString方法將非字符串對象轉換爲字符串對象。

在上面的代碼object[bar]輸出值爲'anu'。

Document說:「因爲這兩個foo和bar轉換爲相同的字符串」

我不能看得懂Java腳本這個代碼toString方法。

任何人都可以請解釋它是如何工作的?

+0

使用函數引用的屬性名稱,他們很少有確切的相同。 – Teemu

回答

7

當您使用的foo值作爲屬性名稱,它呼籲toStringfooobject[foo.toString()] = 'anu',如果不重寫,將返回相同的數值爲每一個對象,這是'[object Object]'

所以實際上你有屬性名稱是'[object Object]'。 低於console.log s將確保您有一個名爲'[object Object]'的房產。

var foo = {unique_prop: 1}; 
 

 
var object = {}; 
 

 
object[foo] = 'anu'; 
 

 
console.log(`foo.toString() - ${foo.toString()}`); 
 
console.log(`object.toString() - ${object.toString()}`); 
 
console.log(`object.toString() === foo.toString() ? - ${object.toString() === foo.toString()}`); 
 

 
for(var prop in object) { 
 
    console.log(prop); 
 
}

+0

謝謝@Suren Srapyan。您清楚地解釋了代碼工作功能。現在我的疑問被清除了。再次感謝。 – Asha