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

318
Visualizações
¿Pasar el objeto como parámetro a la función constructora y copiar sus propiedades al nuevo objeto?

Tengo un constructor de JavaScript como este:

 function Box(obj) { this.obj = obj; }

que quiero pasar un objeto como un parámetro como este:

 var box = new Box({prop1: "a", prop2: "b", prop3: "c"})

y me da algo como esto:

 box.obj.prop1 box.obj.prop2 box.obj.prop3

pero me gustaría que las propiedades estén directamente en el objeto de esta manera:

 box.prop1 box.prop2 box.prop3

Sé que podría hacer algo como esto:

 function Box(obj) { this.prop1 = obj.prop1; this.prop2 = obj.prop2; this.prop3 = obj.prop3; }

Pero eso no es bueno porque entonces mi constructor tendría que "saber" antes los nombres de las propiedades del parámetro del objeto. Lo que me gustaría es poder pasar diferentes objetos como parámetros y asignar sus propiedades directamente como propiedades del nuevo objeto personalizado creado por el constructor para obtener box.propX y no box.obj.propX . Espero estar siendo claro, tal vez estoy midiendo algo muy obvio, pero soy un novato, ¡así que necesito su ayuda!

Gracias por adelantado.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Podrías hacer esto. Probablemente también haya una forma jquery ...

 function Box(obj) { for (var fld in obj) { this[fld] = obj[fld]; } }

Puede incluir una prueba para hasOwnProperty si tiene (creo que tontamente) un objeto extendido

 function Box(obj) { for (var fld in obj) { if (obj.hasOwnProperty(fld)) { this[fld] = obj[fld]; } } }

Editar

¡Ah, ja! es jQuery.extend

Entonces, la forma jQuery es:

 function Box(obj) { $.extend(this, obj); }
over 4 years ago · Santiago Trujillo Relatório

0

Simplemente pon esto en tu constructor.

 for (var prop in obj) { if (obj.hasOwnProperty(prop)) { this[prop] = obj[prop]; } }
over 4 years ago · Santiago Trujillo Relatório

0

muy corto

 function Box(obj) { Object.assign(this, obj); }
over 4 years ago · Santiago Trujillo 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