setPrototypeOf()

176 阅读1分钟

setPrototypeOf()

  • setPrototypeOf()捕获器会在 Object.setPrototypeOf()中被调用。对应的反射 API 方法为 Reflect.setPrototypeOf()。
    const myTarget = {};
    const proxy = new Proxy(myTarget, {
      setPrototypeOf(target, property) {
        console.log("setPrototypeOf()");
        return Reflect.setPrototypeOf(...arguments);
      },
    });
    Object.setPrototypeOf(proxy, Object);
    // setPrototypeOf()
    
  1. 返回值
    setPrototypeOf()必须返回布尔值,表示原型赋值是否成功。返回非布尔值会被转型为布尔值。
  2. 拦截的操作
    Object.setPrototypeOf(proxy);
    Reflect.setPrototypeOf(proxy);
    
  3. 捕获器异常
    target: 目标对象;
    prototype: target 的替代原型,如果是顶级原型就是 null;
  4. 捕获器不变式 如果 target 不可扩展,则唯一有效的 prototype 参数就是 Object.getPrototypeOf(target)的返回值

Object.setPrototypeOf()方法设置一个指定的对象原型(既内部[[Prototype]]属性)到另一个对象或 null