var foo = {unique_prop: 1}, bar = {unique_prop: 2}, object = {};
object[foo] = 'anu';
console.log(object[bar]);
上面的代码输出“anu”。
toString
方法将非字符串对象类型转换为字符串对象。
在上面的代码中,object[bar]
将值输出为“anu”。
Document说“因为 foo 和 bar 都转换为相同的字符串”
我无法理解此代码中的 java 脚本 toString
方法。
谁能解释一下它是如何工作的吗?
最佳答案
当您使用 foo
的值作为属性名称时,它会调用 foo
上的 toString
,如 object[foo. toString()] = 'anu'
,如果不重写,将为每个对象返回相同的值,即 '[object Object]'
所以实际上你有一个名为'[object Object]'
的属性。
下面的 console.log
将确保您有一个名为 '[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);
}
关于属性名称上的 Javascript toString 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45936018/