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

185
Vistas
¿Puede agregar un nuevo parámetro dinámico a un constructor de objetos sin cambiar el constructor de objetos?

Soy nuevo en Javascript y estoy aprendiendo sobre objetos. Aprendí que puedes agregar una nueva propiedad o método a un objeto con prototipo.

 function Person(first, last, age, eyecolor) { this.firstName = first; this.lastName = last; this.age = age; this.eyeColor = eyecolor; } Person.prototype.nationality = "English";

Ahora me pregunto si también es posible agregar una nueva propiedad con un nuevo parámetro sin asignar directamente la nueva propiedad o cambiar el constructor del objeto. Entonces, se convierte en:

 function Person(first, last, age, eyecolor, nationality) { this.firstName = first; this.lastName = last; this.age = age; this.eyeColor = eyecolor; this.nationality = nationality; }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Puede hacer esto envolviendo el constructor original en una nueva función, como esta:

 const originalPerson = Person; Person = function(first, last, age, eyecolor, nationality) { const instance = new originalPerson(first, last, age, eyecolor); instance.nationality = nationality; return instance; };

Ejemplo en vivo:

 function Person(first, last, age, eyecolor) { this.firstName = first; this.lastName = last; this.age = age; this.eyeColor = eyecolor; } const originalPerson = Person; Person = function(first, last, age, eyecolor, nationality) { const instance = new originalPerson(first, last, age, eyecolor); instance.nationality = nationality; return instance; }; const joe = new Person("Joe", "Bloggs", 42, "brown", "English"); console.log(joe.nationality);

También puedes hacerlo vía herencia:

 const originalPerson = Person; Person = class extends originalPerson { constructor(first, last, age, eyecolor, nationality) { super(first, last, age, eyecolor); this.nationality = nationality; } };

Ejemplo en vivo:

 function Person(first, last, age, eyecolor) { this.firstName = first; this.lastName = last; this.age = age; this.eyeColor = eyecolor; } const originalPerson = Person; Person = class extends originalPerson { constructor(first, last, age, eyecolor, nationality) { super(first, last, age, eyecolor); this.nationality = nationality; } }; const joe = new Person("Joe", "Bloggs", 42, "brown", "English"); console.log(joe.nationality);

En ambos casos, reasigné Person , pero no tiene que hacer eso, simplemente puede usar ExtendedPerson o algo así:

 class ExtendedPerson extends Person { constructor(first, last, age, eyecolor, nationality) { super(first, last, age, eyecolor); this.nationality = nationality; } }

... y luego use new ExtendedPerson(/*...*/) .

Ejemplo en vivo:

 function Person(first, last, age, eyecolor) { this.firstName = first; this.lastName = last; this.age = age; this.eyeColor = eyecolor; } class ExtendedPerson extends Person { constructor(first, last, age, eyecolor, nationality) { super(first, last, age, eyecolor); this.nationality = nationality; } } const joe = new ExtendedPerson("Joe", "Bloggs", 42, "brown", "English"); console.log(joe.nationality);

about 4 years ago · Juan Pablo Isaza 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