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

123
Visualizações
¿Puedo editar una función de constructor en javaScript para agregar propiedades?

Tengo esta función constructora básica (con dos entradas)

function Person(firstName, lastName) { this.firstName = firstName; this.lastName = lastName; }

Para crear un objeto con la función constructora Persona , hago

var person1 = new Person("John", "Doe");

la salida es

si quiero agregar una nueva propiedad al objeto persona1 ( edad , por ejemplo), lo hago

 person1.age = 20;

y la salida es

ahora, quiero crear un nuevo objeto con la misma función de constructor... digamos person2 . Como sé su edad, también quiero agregar esta información al objeto. lo hago asi

 var person2 = new Person("Jennifer", "Unknown", 30);

la salida es

la salida viene sin la propiedad de edad , porque la función constructora Person no lo sabe

Para crear el objeto person2 con esas 3 entradas usando Person , debo redefinir Person (con esas 3 entradas) y recrear person2 , pasando esas 3 informaciones o agregar la información adicional si el objeto ya existe...

Mi pregunta es:

¿Cómo proceder, si quiero agregar un tercer objeto con Persona ( persona3 ), pasando 4 entradas ( nombre , apellido , edad , nacionalidad )? ¿Tengo que redefinir Person (nuevamente) y luego crear person3 ? ... ¡Esto parece un trabajo tedioso y sin lógica! ¡Confieso que soy un novato en jS!

¿Hay alguna forma de editar una función de constructor sin redefinirla cada vez que quiero crear un nuevo objeto con propiedades adicionales? ¿Puedo agregar una nueva propiedad a las funciones de un constructor sin redefinirla? ¿Y si quiero editar una función constructora para agregar un método? por ejemplo:

 status = function(){ alert(this.firstName + " " + this. lastName + " " + ", a person with" + " " + this. age + " " + "years old" + " " + "was found nearby doing jS stuff!" )}

resumiendo... mi objetivo es:

Comienzo con start y quiero terminar con end sin redefinir Person , solo editándolo.

Mi pregunta tiene sentido? Agradezco cualquier consejo.

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

0

Bueno, no existe tal cosa como "editar" una función, pero puede reutilizar la implementación anterior para definir su nueva función en lugar de reescribirla por completo.

 function Person(firstName, lastName) { this.firstName = firstName this.lastName = lastName } Person.prototype.speak = function () { console.log('hey!') } p1 = new Person('first1', 'last1') console.log('p1 firstName', p1.firstName) p1.speak() // hey! // store old prototype object oldPrototype = Person.prototype Person = function (firstName, lastName, age) { // call the old constructor to initialize with existing properties oldPrototype.constructor.call(this, firstName, lastName) // assign new properties this.age = age // assign a new default property this.otherProp = 'new prop' } // copy over the old prototype to the new Person Person.prototype = oldPrototype p2 = new Person('first2', 'last2', 10) console.log('p2 firstName', p2.firstName) console.log('p2 new properties', p2.age, p2.otherProp) // 10 and 'new prop' p2.speak() // should work! because we already copied the old prototype object over // it will not affect any of the old Person instances that were initialized before console.log('p1 age', p1.age) // undefined console.log('p1 otherProp', p1.otherProp) // undefined

Si bien esto es posible, ¡no lo use en exceso!

Porque parece un antipatrón para anular una función constructor . Debería crear una nueva constructor function extendiendo su Person en su lugar.

Leer más sobre Herencia en JavaScript

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