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)
  }
})
07-14 08:48