ES6中对象的一些拓展
- 当对象键名与对应值名相等的时候,可以进行简写 const obj = { name }
- 允许字面量定义对象时,将表达式放在括号内
let lastWord = 'last word';const a = {'first word': 'hello',[lastWord]: 'world'
};a['first word'] // "hello"
a[lastWord] // "world"
a['last word'] // "world"
- 在解构赋值中,未被读取的可遍历的属性,可以分配到指定的对象上面。注意:拓展运算符形式的解构赋值必须是最后一个参数,否则会报错.
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
x // 1
y // 2
z // { a: 3, b: 4 }
- ES6 一共有 5 种方法可以遍历对象的属性。
a.for…in:循环遍历对象自身的和继承的可枚举属性(不含 Symbol 属性)
b.Object.keys(obj):返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含 Symbol 属性)的键名
c.Object.getOwnPropertyNames(obj):回一个数组,包含对象自身的所有属性(不含 Symbol 属性,但是包括不可枚举属性)的键名
d.Object.getOwnPropertySymbols(obj):返回一个数组,包含对象自身的所有 Symbol 属性的键名
e.Reflect.ownKeys(obj):返回一个数组,包含对象自身的(不含继承的)所有键名,不管键名是 Symbol 或字符串,也不管是否可枚举
5.对象新增的方法
Object.is():严格判断两个值是否相等,与严格比较运算符(===)的行为基本一致,不同之处只有两个:一是+0不等于-0,二是NaN等于自身;
Object.assign():方法用于对象的合并,将源对象source(第二个参数)的所有可枚举属性,复制到目标对象target(第一个参数);
Object.getOwnPropertyDescriptors():返回指定对象所有自身属性(非继承属性)的描述对象;
Object.setPrototypeOf():方法用来设置一个对象的原型对象;
Object.getPrototypeOf(): 用于读取一个对象的原型对象;
Object.keys(): 返回自身的(不含继承的)所有可遍历(enumerable)属性的键名的数组;
Object.values(): 返回自身的(不含继承的)所有可遍历(enumerable)属性的键对应值的数组;
Object.entries(): 返回一个对象自身的(不含继承的)所有可遍历(enumerable)属性的键值对的数组;
Object.fromEntries(): 用于将一个键值对数组转为对象;
对象的方法具体使用可点击前往 MDN-Object