# 对象的增删查改

# 对象的声明

  1. let obj = {a: 1}
  2. let obj = new Object({a: 1})

# 删除属性

delete obj.xxx

# 查看属性

  • 查看自身属性: Object.keys(obj)
  • 自身+原型属性: console.dir(obj)
  • 判断一个属性是自己的还是原型的: obj.hasOwnProperty('xxx')

如何判断一个属性是否存在与这个对象里并且不是undefined: xxx in obj && obj.xxx === undefined

# 'name' in objobj.hasOwnProperty('name') 的区别

in检测对象里的全部属性, 也就是包括了原型属性, 而hasOwnProperty只包含检测对象里的属性, 不包含原型属性.

# 修改和增加属性

  • 增加属性: obj.yyy = '123
  • 批量赋值: Object.assign(obj, {p1:1, p2:2, p3:3}
  • 修改原型: let obj = Object.create(prototype), prototype是一个对象, 它指定了obj__proto__是其本身.