Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

76
Vistas
tratando de configurar la trampa Proxy para un objeto anidado. intercesión exitosa excepto array.unshift y array.splice y algunos otros

Estoy tratando de hacer una trampa Proxy para un objeto anidado (un poco tratando de implementar vuex reactivo).

logró establecer una trampa después de esta publicación: Cómo usar el proxy javascript para objetos anidados

mi código se ve así:

 //inside function const isProxy = Symbol("isProxy"); const handler: ProxyHandler<StateObj> = { get: (target, name, receiver) => { if (name === isProxy) return true; const prop = Reflect.get(target, name); if (typeof prop == undefined) return; this.track(target, name); // track the component that "get" object. if (!prop.isProxy && typeof prop == "object") { return new Proxy(prop, handler); } return prop; }, set: (target, name, value, receiver) => { if (target[name] == value) return true; this.trigger(target, name); //set the trigger for the "tracked" object Reflect.set(target, name, value); return true; }, apply(target: StateObj, thisArg: any, argArray: any[]): any { } }; return new Proxy(state, handler);

por favor, no se preocupe por las funciones de seguimiento y activación, que son las cosas reactivas que se usan en vues. este código fue exitoso para todo tipo de cambios en el objeto original. la trampa funcionó bastante bien. pero el problema es que cuando trato de usar Array.prototype.unshift o Array.prototype.splice en una matriz dentro del objeto proxy, no funciona.

Descubrí la razón por la que ocurre el error, que es que los métodos Array.prototype.unshift o Array.prototype.splice asignan directamente los resultados de la ranura [Get] de los índices originales de la matriz a la llamada [Set], por lo que cuando [ Set] trap está activado, asigna una matriz de proxy, no la propiedad original de 'objetivo' del objeto

Puede encontrar la especificación del método Prototype en el documento ECMAscript

 1. Let fromValue be ? Get(O, from). 2. Perform ? Set(O, to, fromValue, true).

así que cuando asigno un objeto simple o un valor al objeto, la trampa funciona bien, pero cuando asigno un objeto o un valor que 'obtuve' del objeto que activa la trampa proxy [get], falla con este error:

TypeError: no se pueden leer las propiedades de undefined (leyendo 'isProxy')

lo que creo que significa que el objeto es proxy (no estoy seguro).

¿podría sugerir alguna forma en que pueda atrapar el comportamiento de asignaciones directas, de empalme o sin cambios como state[i] = state[i+1] ?

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda