2017-08-29 80 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

相关问题