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

317
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

0

muy corto

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