ES6系列之Reflect
# 一、简介
# 1.1 什么是Reflect
为操作对象而提供的新
API
# 1.2 为什么要设计Reflect
- 将
Object对象的属于语言内部的方法放到Reflect对象上,即从Reflect对象上拿Object对象内部方法 - 将用老
Object方法报错的情况,改为返回false
// 旧写法
try {
Object.defineProperty(target, property, attributes);
// success
} catch (e) {
// failure
}
@前端进阶之旅: 代码已经复制到剪贴板
// 新写法
if (Reflect.defineProperty(target, property, attributes)) {
// success
} else {
// failure
}
@前端进阶之旅: 代码已经复制到剪贴板
- 让
Object操作变成函数行为
// 旧写法
'name' in Object //true
@前端进阶之旅: 代码已经复制到剪贴板
// 新写法
Reflect.has(Object,'name') //true
@前端进阶之旅: 代码已经复制到剪贴板
Reflect与Proxy是相辅相成的,在Proxy上有的方法,在Reflect就一定有
let target={}
let handler={
set(target,proName,proValue,receiver){
//确认对象的属性赋值成功
let isSuccess=Reflect.set(target,proName,proValue,receiver)
if(isSuccess