proxy代理里面的Reflect

Reflect对象经常和Proxy代理一起使用,原因有三点:

  1. Reflect提供的所有静态方法和Proxy第2个handle参数方法是一模一样的。
  2. Proxy get/set()方法需要的返回值正是Reflect的get/set方法的返回值,可以天然配合使用,比直接对象赋值/获取值要更方便和准确。
  3. receiver参数具有不可替代性。
    Reflect方法类似于
    Reflect.apply(target, thisArgument, argumentsList) Function.prototype.apply()
    Reflect.construct(target, argumentsList[, newTarget]) new target(…args)
    Reflect.defineProperty(target, prop, attributes) Object.defineProperty()
    Reflect.deleteProperty(target, prop) delete target[name]
    Reflect.get(target, prop[, receiver]) target[name]
    Reflect.getOwnPropertyDescriptor(target, prop) Object.getOwnPropertyDescriptor()
    Reflect.getPrototypeOf(target) Object.getPrototypeOf()
    Reflect.has(target, prop) in 运算符
    Reflect.isExtensible(target) Object.isExtensible()
    Reflect.ownKeys(target) Object.keys()
    Reflect.preventExtensions(target) Object.preventExtensions()
    Reflect.set(target, prop, value[, receiver]) target[prop] = value
    Reflect.setPrototypeOf(target, prototype) Object.setPrototypeOf()
posted @ 2024-02-21 23:47  Baipei  阅读(35)  评论(0)    收藏  举报