es6对象的扩展

对象的扩展

简洁表示法:直接写入变量和函数作为对象的属性和方法({ prop, method() {} })

属性名表达式:字面量定义对象时使用[]定义键([prop],不能与上同时使用)

方法的name属性:返回方法函数名

  • 取值函数(getter)和存值函数(setter):get/set 函数名(属性的描述对象在get和set上)
  • bind返回的函数:bound 函数名
  • Function构造函数返回的函数实例:anonymous

属性的可枚举性和遍历:描述对象的enumerable

super关键字:指向当前对象的原型对象(只能用在对象的简写方法中method() {})

Object.is():对比两值是否相等

Object.assign():合并对象(浅拷贝),返回原对象

Object.getPrototypeOf():返回对象的原型对象

Object.setPrototypeOf():设置对象的原型对象

__proto__:返回或设置对象的原型对象

 

2017新增

  •  Object.getOwnPropertyDescriptors():返回对象所有自身属性(非继承属性)的描述对象
  •  Object.values():返回以值组成的数组
  •  Object.entries():返回以键和值组成的数组

 

2018新增

  •  扩展运算符(...):转换对象为用逗号分隔的参数序列({ ...obj },相当于rest/spread参数的逆运算)

 

扩展应用

克隆对象:const obj = { __proto__: Object.getPrototypeOf(obj1), ...obj1 }

合并对象:const obj = { ...obj1, ...obj2 }

转换字符串为对象:{ ..."hello" }

转换数组为对象:{ ...[1, 2] }

与对象解构赋值结合:const { x, ...rest/spread } = { x: 1, y: 2, z: 3 }(不能复制继承自原型对象的属性)

修改现有对象部分属性:const obj = { x: 1, ...{ x: 2 } }

 

2019新增

 Object.fromEntries():返回以键和值组成的对象(Object.entries()的逆操作)

posted @ 2019-10-10 14:35  HandsomeGuy  阅读(225)  评论(0编辑  收藏  举报