var foo = {unique_prop: 1}, bar = {unique_prop: 2}, object = {};
object[foo] = 'anu';
console.log(object[bar]);
Run Code Online (Sandbox Code Playgroud)
上面的代码输出"anu".
toString 方法将非字符串对象强制转换为字符串对象.
在上面的代码中object[bar]输出值为'anu'.
文件说'因为foo和bar都转换为相同的字符串'
我无法理解toString此代码中的java脚本方法.
任何人都可以解释它是如何工作的?
当您使用foo的值作为属性名称,它要求toString对foo像object[foo.toString()] = 'anu',如果不重写,将返回相同的数值为每个对象,这是'[object Object]'
所以实际上你有一个名字的属性'[object Object]'.下面console.logs将确保您拥有一个名字的财产'[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);
}Run Code Online (Sandbox Code Playgroud)