今天看到书上讲到JS的对象,有个示例不是很明白
var myObject = {};
myObject[myObject] = "foo";
myObject["[object Object]"];//foo,这里的[object Object]等价于{}吗?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
这里的[object Object]是在
myObject[myObject] = "foo";
这一步的时候由于myObject的隐式类型转换得来的,所以这里的[object Object]只是转换来的一个字符串而已,只是在对象中以‘[object Object]’为键存放了‘foo’这个值!这是对象键名的隐式转换问题。
就拿这个例子来说,用大白话解释就是:
有一个A对象,想将B对象作为A对象的一个键名传递进来,但是因为对象的所有键名都是字符串,所以B对象就会调用toString()方法,转换为一个字符串"[object Object]",来作为一个A对象的一个键名存放数据,实例中的数据就是这个"foo"字符串。
另外特别需要注意的一点是:
你的问题中的A对象和B对象是同一个,这点很迷惑人,所以我新声明了一个mykey来区分。
key值会自动转成string的