代码之家  ›  专栏  ›  技术社区  ›  Pedro Henrique

如何为自己分配代理陷阱?

  •  0
  • Pedro Henrique  · 技术社区  · 9 月前

    考虑以下代理对象:

    let proxy = new Proxy({}, handler);
    

    如果我执行以下分配,代理实例将被覆盖,丢失陷阱处理程序:

    proxy = {};
    

    好吧,但如果我使用 Object.assign ,它仍然是同一个实例(保留陷阱处理程序):

    Object.assign({}, proxy);
    

    但这样做,不会触发任何代理陷阱。

    是否有可能使代理陷阱成为这些分配方法中的任何一种(使用以下任一方法 = Object.assign ?

    1 回复  |  直到 9 月前
        1
  •  0
  •   Bergi    9 月前

    不,不可能捕获持有代理的变量的重新分配。

    至于使用 Object.assign 使用代理,这通常会触发一些陷阱,要么 set (用于将属性从源复制到代理目标)或 ownKeys (如果代理用作源)。仅当您未向代理分配任何内容时( Object.assign(proxy) Object.assign(proxy, {}) ),然后什么都不会发生。

    没有语法(有一个单独的陷阱)可以通过多个属性更新来修改代理。你可能真正在寻找的是一种正常的方法,比如 proxy.reset({}) .