Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

101
Visualizações
Acceder a propiedades proxy internamente

Estoy usando clases modelo que amplían una clase Model base. La clase Model devuelve un Proxy del constructor que me permite acceder a las propiedades pasadas al constructor sin tener que definirlas explícitamente en la clase.

Usando esto, puedo acceder a una propiedad del objeto de data externamente, pero intentar acceder internamente devuelve indefinido. ¿Cómo puedo acceder a las propiedades proxy desde dentro de la propia clase?

 class Model { constructor(data) { this.data = data; return new Proxy(this, { get(model, prop) { if (model.hasOwnProperty(prop) || prop in model) { return model[prop]; } if (model.data.hasOwnProperty(prop)) { return model.data[prop]; } } }); } } class User extends Model { get name() { return `${this.first_name} ${this.last_name}`; } } const user = new User({ first_name: 'Bob', last_name: 'Smith' }); console.log(user.first_name); // 'Bob' console.log(user.name); // undefined undefined

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Debe usar Reflect.get () para acceder a las propiedades en el objeto original

Reflejar

Reflect es un objeto incorporado que proporciona métodos para operaciones de JavaScript interceptables. Los métodos son los mismos que los de los controladores de proxy . Reflect no es un objeto de función, por lo que no es construible.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect

Reflejar.obtener()

El método estático Reflect.get() funciona como obtener una propiedad de un objeto ( target[propertyKey] ) como una función.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/get

 class Model { constructor(data) { this.data = data return new Proxy(this, { get(model, prop) { if (model.data.hasOwnProperty(prop)) { return model.data[prop] } return Reflect.get(...arguments) }, }) } } class User extends Model { get name() { return `${this.first_name} ${this.last_name}` } } const user = new User({ first_name: 'Bob', last_name: 'Smith', }) console.log(user.first_name) // 'Bob' console.log(user.name) // 'Bob Smith'

Reflect.get toma 3 argumentos: el objeto, la clave y this contexto es opcional.

Aquí Reflect.get(...arguments) es equivalente a Reflect.get(model, prop)

Cómo usar Reflect.get

 Reflect.get({ x: 1, y: 2 }, 'x') // 1 Reflect.get(['zero', 'one'], 1) // "one"
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda