说说ES6中对象新增了哪些扩展
# 是什么
- 属性的简写
- 属性名表达式
- super关键字
- 拓展运算符的应用
- 属性的遍历
- 新增的方法
# 怎么用
# 属性的简写
const obj = {name:name}
// ===
const obj = {name}
function foo(){
const x = 1
const y = 2
return {x, y}
}
# 属性名表达式
const key = 'testKey'
const obj = {
name: 'fangdown',
[key]: 'key'
}
obj[key] // key
# super关键字
const proto = {
foo: 'hello'
}
const obj = {
foo: 'world',
find(){
return super.foo
}
}
Object.setPrototypeOf(obj, proto)
obj.find() // hello
# 拓展运算符的应用
解构赋值是最后一个参数
let {x, y, ...z} = {x:1, y: 2, a:3, b:4}
x // 1
y // 2
z // {a:3, b:4}
# 属性的遍历
- for...in 遍历循环(包含原型链)
- Object.keys(obj) 获得键值数组
- Object.getOwnPropertyNames(obj) 获得自身属性的键名
- Object.getOwnPropertySymbols(obj) 获得自身的symbol属性键名
- Reflact.ownKeys(obj) 返回自身的所有键名
# 新增的方法
- Object.is() 判断是否相等===
- Object.assign() 合并对象
- Object.keys(),Object.values(), Object.entries() 键名 键值 键名键值
- Object.setPrototypeOf(), Object.getPrototypeOf() 设置原型对象,获取原型对象
# FAQ
上次更新: 2021/12/19, 18:05:42