扫码关注官方订阅号
var a={}, b={key:'b'}, c={key:'c'}; a[b]=123; a[c]=456; console.log(a[b]);
这段代码为什么输出的是 456 ?
认证高级PHP讲师
a[b] = 123会转化为a["[object Object]"] = 123a[c] = 456会转化为a["[object Object]"] = 456console.log(a[b])会转化为console.log(a["[object Object]"])
a[b] = 123
a["[object Object]"] = 123
a[c] = 456
a["[object Object]"] = 456
console.log(a[b])
console.log(a["[object Object]"])
因此是结果为456
456
因为b,c都是对象Object类对象。toString都是"[object Object]"
b
c
Object
toString
"[object Object]"
a是一个对象 b和c都是对象 如果写成a[object]的话 里面是没有键的
你给a复制了123 又重新赋值了456,会覆盖掉前面一次的赋值a的值就是object:456跟里面的b,c是什么 无关的,因为里面都是object
如果你写成 a['b'] = 123 a['c'] = 456 那结果就完全不一样了
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
a[b] = 123会转化为a["[object Object]"] = 123a[c] = 456会转化为a["[object Object]"] = 456console.log(a[b])会转化为console.log(a["[object Object]"])因此是结果为
456因为
b,c都是对象Object类对象。toString都是"[object Object]"a是一个对象
b和c都是对象 如果写成a[object]的话 里面是没有键的
你给a复制了123 又重新赋值了456,会覆盖掉前面一次的赋值
a的值就是object:456
跟里面的b,c是什么 无关的,因为里面都是object
如果你写成 a['b'] = 123 a['c'] = 456 那结果就完全不一样了