属性
为对象赋非字符串类型的属性时需要小心,查看下面的例子
// log
let obj = {}
let nameObj = { name: 'oceans' }
let ageObj = { age: 18 }
obj[nameObj] = 1
obj[ageObj] = 2
console.log(obj[nameObj])
console.log(obj.nameObj)
涉及到的知识点:
- 对象的属性只能是字符串,如果非要弄个对象,那么会转化为字符串
- 转化方式并不是想当然的
JSON.stringfy()
,而是{}.prototype.toString()
.
的方式无法取变量,obj.nameObj
会转化为obj['nameObj']
为了核实,这里打印 obj 对象的属性
// log
let obj = {}
let nameObj = { name: 'oceans' }
let ageObj = { age: 18 }
obj[nameObj] = 1
console.log(Object.keys(obj))
obj[ageObj] = 2
console.log(Object.keys(obj))