Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

367
Views
¿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 answers
Answer question

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 Report

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 Report

0

muy corto

 function Box(obj) { Object.assign(this, obj); }
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!