Skip to content

反射

什么是反射

反射是一个内置的全局对象,它提供了一些与操作对象相关的静态方法,这些方法与代理捕获器的方法一一对应。

INFO

反射方法并不局限于代理捕获器中使用。

大多数的反射方法在 Object 上也有对应的方法,反射方法适用于细粒度的对象控制与操作。

直接使用反射

ts
function sum(a: number, b: number) {
  return a + b;
}

console.log(Reflect.apply(sum, undefined, [1, 2])); // 3

代理捕获器中使用反射

ts
const obj: { [key: string]: any } = {};

const proxy = new Proxy(obj, {
  get(target, prop, receiver) {
    console.log(`getting ${String(prop)}`);
    return Reflect.get(target, prop, receiver);
  },
  set(target, prop, value, receiver) {
    console.log(`setting ${String(prop)} to ${value}`);
    return Reflect.set(target, prop, value, receiver);
  },
});

proxy.id = "proxyId";
proxy.id;