声明对象的两种语法
let obj = { 'p1': 1, 'p2': 2 }
let obj = new Object({'p1': 1})更规范
3. console.log({ 'name': 'frank, 'age': 18 })
增删改查
删
刪除对象的属性 delete obj.xxx 或 delete obj['xxx']
删除某项属性的值 obj.xxx = undefined
查看是否含有某属性或值
- 不含属性名:
'xxx' in obj === false(此方法同时查找该对象的自身属性和共有属性) - 含有属性名,但是值为undefined:
'xxx' in obj && obj.xxx === undefined
查
查看自身属性
- 属性
Object.keys(obj) - 值
Object.Values(obj) - 属性和值
Object.entries(obj)
查看自身属性和共有属性
console.dir(obj)
查看共有属性
obj.__proto__
查看某一项属性
- 中括号语法:
obj['name'] - 点语法:
obj.name
判断某属性是否为自身属性
obj.hasOwnProperty('toString')(此方法只查看该对象自身是否含有该属性)
增改
直接赋值
let obj = {xxx: 'yyy'}obj.xxx = 'yyy'obj['xxx'] = 'yyy'obj['x'+'xx'] = 'yyy'先求xxx的值let key = xxx;obj[key] = 'yyy'先声明一个变量key,则中括号语法中key不需要加引号Object.defineProperty(obj, prop, descriptor)直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。
批量赋值
Object.assign(obj,{p1:1,p2:2})
注意
字符串与变量
- 在中括号语法中,加引号的为字符串,不加引号的为变量;在点语法中,字符串不加引号。
- 引号可以省略,省略后只能写成标识符。
- 前期使用中括号语法避免出错。
原型与共有属性
- 原型是对象,共有属性是属性,原型包含共有属性
- 包含所有共有属性的原型称为对象的根
- 对象的根的原型为null
obj.__proto__存储该对象的原型的地址- 推荐使用
let obj = Objcet.create(common)给对象创建一个原型以进行修改。common和其原型形成原型链。