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()的逆操作)

浙公网安备 33010602011771号