声明对象的两种语法
let obj = {'name':'obj'} //第一种写法
let obj = new Object({'name':'obj'}) //第二种写法
注: 在声明对象的{}中,属性名会自动变成字符串
let obj = {name:'obj',gender:'unknown'}
Object.keys(obj) //会得到["name","gender"]
删除对象的属性
delete obj.xxx //第一种写法
delete obj['xxx'] //第二种写法
查看对象的属性
- 查看所有属性
Object.keys(obj) //查看自身所有属性
console.dir(obj) //查看自身+共有属性
- 查看某一个属性
obj['key'] //第一种写法
obj.key //第二种写法
修改或增加对象的属性
- 直接赋值
obj.xxx = 'xxx' //第一种写法
obj['xxx'] = 'xxx' //第二种写法
obj[yyy] = 'xxx' //第三种写法,其中yyy为变量,可以let yyy ='xxx'
- 批量赋值
Object.assign(obj,{xxx:'xxx',yyy:'yyy'})
'name' in obj
和obj.hasOwnProperty('name')
的区别
-
'name' in obj
判断obj(自身+共有属性)内是否有name这个属性,返回布尔值,包括共有属性中的属性,如toString -
obj.hasOwnProperty('name')
判断obj自身内是否有name这个属性,返回布尔值,不包括共有属性中的属性,如果自身没有toString属性时,判断obj.hasOwnProperty('toString')
会返回false