声明对象的两种语法
对象定义:1.是无序的数据集合 2.键值对的集合 声明对象的两种语法:
let obj ={'name':'emma','age':18}let obj = new Object({'name':'emma','age':18})注意第2种是标准写法,但是第一种是大家普遍使用的写法,还有一种无对象名的声明方法:console.log({'name':'emma','age':18}),但是这种对象只能使用一次
这里有一点值得注意的是对象的属性名(键名)是字符串不是标识符
如何删除对象的属性
若想删除对象的属性,使用delete obj.xxx或者 delete obj['xxx'],若想判断对象中是否包含此属性可用'xxx' in obj
如何查看对象的属性
- 查看属性名可用
Object.keys(obj) - 查看属性名对应的的值可用
Object.values(obj) - 查看对象的键值对可以使用
Object.entries(obj)
console.dir(obj),obj.__proto__也可以查看对象的原型但是不推荐使用
obj.hasOwnProperty('toString')
6. 查看属性的两种方法:
- obj.xxx
- obj['xxx']
如何修改或增加对象的属性
- 赋值:
- 直接赋值,注意属性名是字符串
- 批量赋值:
Object.assign(obj,{'p1':1,'p2':2})
- 对象无法通过自身修改或增加共有属性,例如:
obj1.toString='xxx'是不会修改到obj2的toString属性的 - 若想修改可以使用
obj.__proto__.toString ='xxx'或Object.prototype.toString = 'xxx',但是不推荐更改共有属性会导致后续代码出现很多问题
- 修改隐藏属性
推荐使用Object.creat(common)
'name'in obj和obj.hasOwnProperty('name')的区别
'name'in obj是判断name属性名是否在obj对象中,obj.hasOwnProperty('name')是判断name属性是obj对象的共有属性还是特有属性