本文是《ES6 标准入门(第 2 版)》第 9 章 的笔记。
对象的扩展总结下来有以下几处:
- 属性的简洁表示法;
- 属性表达式;
- 方法的 name 属性;
- Object.is;
- Object.assign;
- Object.setPrototypeOf & Object.getPrototypeOf;
- 对象属性的枚举性以及遍历;
- 对象扩展运算符;
属性的简洁表示法
|
|
属性表达式
|
|
属性表达式不可以同属性简洁表示法混用。
方法的 name 属性
这个和 function 的 name 属性一样。
|
|
Object.is
判断两个值是否严格相等:
|
|
Object.assign(target, …sources)
几点需要明确:
- copy 所有 string 和 symbol 属性;
- 仅 copy 自身属性和可枚举属性;
It uses [[Get]] on the source and [[Set]] on the target
;- target 如果是原始类型,会被先转成对象;
|
|
Object.setPrototypeOf & Object.getPrototypeOf
|
|
对象属性的枚举性以及遍历
- for in
- Object.keys
- Object.getOwnPropertyNames
- Object.getOwnPropertySymbols
- Reflect.ownKeys
Reflect.enumerate
|
|
遍历次序规则
- 数字属性优先,安装数字大小;
- 再字符串,按生成顺序;
- 最后 symbol 属性,按生成顺序;
|
|
对象扩展运算符
ES7 的提案。
|
|