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

173
Vistas
¿Alguna vez se define un constructor en el objeto mismo?

¿Hay algún caso en el que la propiedad del constructor se defina en un objeto/función/clase en sí mismo, o solo aparece en el prototype ? Por ejemplo:

 let a = new Array(); console.log(a.hasOwnProperty('constructor'), a.constructor); // false -- constructor not defined on Array, but Array.prototype let f = function(){}; console.log(f.hasOwnProperty('constructor'), f.constructor); // false -- constructor not defined on function, but function.prototype

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Sería técnicamente posible que tal cosa ocurra, pero es un olor a código.

 function Klass(){ this.constructor = Klass; } const k = new Klass(); console.log(k.hasOwnProperty('constructor'), k);

(También puede verlo cuando alguien extiende incorrectamente una clase de función )

Se espera que las instancias de objetos tengan una propiedad .constructor en su prototipo , no directamente en la instancia. Si la propiedad está directamente en la instancia, eso causará problemas cuando alguien intente usar uno de los métodos comunes para iterar sobre propiedades propias y encuentre un constructor allí.

Otra razón por la que debería estar en el prototipo y no en el objeto mismo es para aprovechar la herencia prototípica. Si una propiedad puede existir en un objeto, en el prototipo, es mejor hacerlo que duplicar esa propiedad en todas partes, para cada instancia. Y la propiedad del constructor ya está automáticamente en el prototipo, por lo que no debería haber necesidad de alterarla de todos modos.

Por razones similares, los métodos de clase suelen estar en el prototipo de clase cuando es posible, en lugar de duplicarse para cada instancia individual. Es decir, tiene todas las instancias que heredan de un prototipo con el método, en lugar de que todas las instancias tengan su propio método de propiedad. Es decir, no es tan bueno tener

 class Klass { constructor() { this.method = () => console.log('method'); } } const k = new Klass(); k.method();

con el método duplicado para cada instancia, cuando en su lugar puede hacer

 class Klass { method() { console.log('method'); } } const k = new Klass(); k.method();

y tenerlo solo en el prototipo.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Mire el documento de Object.prototype.hasOwnProperty .

A diferencia del operador in, este método no comprueba la propiedad especificada en la cadena de prototipos del objeto.

La propiedad del constructor solo existe en Object.prototype . Y la propiedad prototype solo existe en el constructor de objetos.

ingrese la descripción de la imagen aquí

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