一、简介
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){ console.log("成功") } return isSuccess } } let proxy=new Proxy(target,handler) |
确保对象的属性能正确赋值,广义上讲,即确保对象的原生行为能够正常进行,这就是
Reflect
的作用
二、Reflect的API
注:和
Proxy</