Proxy
用来创建一个对象的代理,可以实现数据的拦截和自定义
get:读取数据
set:设置数据
deleteProperty:删除数据
ownKeys:遍历数据
let user = {}
user = new Proxy(user, {
get(target, key) {},
set(target, key, val) {},
deleteProperty(target, key) {},
ownKeys(target) {}
})
Reflect
不是一个构造器,不能通过 new 操作符实例
函数式操作
console.log('assign' in Object) // true 命令式
console.log(Reflect.has(Object, 'assign')) // true 函数式
和Proxy相辅相成
let user = {}
user = new Proxy(user, {
get(target, key) {
return Reflect.get(target, key)
},
set(target, key, val) {
Reflect.set(target, key, val)
return true
},
deleteProperty(target, key) {
Reflect.defineProperty(target, key)
return true
},
ownKeys(target) {
return Reflect.ownKeys(target).map(item => item)
}
})