对象的特殊情况
var obj={
name:'xiaoming',
age:18
}
console.log(obj == '[object Object]')
代码的输出结果为true
当对象与字符串进行值的判断时
因为一个是复杂数据类型 一个是普通数据类型
这时候会执行obj.valueOf(),结果为一个对象,没办法进行比较
就会执行obj.toString() ==> 变成 ‘[object Object]’
所以执行结果为true
但是如果是 === 那么就会判断类型 结果为false
同理
因为普通js对象上的键只能为字符串
所以当一个对象作为对象的键时 也会发生这种情况
js会将作为键的对象变为一个字符串[object Object]
var obj = {}
var obj2 = {}
obj2[obj] = 123
console.log(obj2)
输出结果为 [object Object]: 123
因为键都为字符串 所以当有其他对象也作为键在obj2中加入条目时会进行覆盖
var obj = {}
var obj2 = {}
var obj3 = {}
obj2[obj] = 123
obj2[obj3] = 456
console.log(obj2)
输出结果为 [object Object]: 456
原先的[object Object]: 123
就被[object Object]: 456
覆盖了