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

145
Vistas
¿Por qué una propiedad no puede estar obligada a funcionar por sí misma?

Sé que para vincular una propiedad a una función, debe agregarla a su prototipo. Por ejemplo:

 function Animal(name) { this.name = name; }; Animal.prototype.number = 20; Animal.prototype.bark = function() {console.log('Woof')}; let mike = new Animal('Mike'); console.log(mike.number) mike.bark();

Tal vez esta sea una pregunta muy ingenua, pero ¿por qué no se le permite vincular una propiedad a la función en sí? Por ejemplo, haciendo lo siguiente:

 function Animal(name) { this.name = name; }; Animal.bark = function() {console.log('Woof')}; Animal.number = 20; let mike = new Animal('Mike'); console.log(mike.number) mike.bark();

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

0

Los objetos en JavaScript usan herencia prototípica. Cada objeto hereda de algún otro objeto, o de null . Esta cadena continúa: todos los objetos finalmente heredan de null .

Si un objeto hereda de otro, todas las propiedades disponibles en el objeto principal estarán disponibles en el objeto secundario (a menos que el objeto secundario defina una propiedad con el mismo nombre, sombreando y ocultando efectivamente el nombre en el principal).

Si instancias de Animal heredadas de Animal mismo, como con

 function Animal(name) { this.name = name; }; Animal.bark = function() {console.log('Woof')}; Animal.number = 20;

Entonces, las instancias de Animal heredarían de function Animal , que es una función, y serían funciones y también heredarían .call , .apply , etc. Esto casi nunca es lo que querría un desarrollador.

Tener un objeto controlable separado del que heredan las instancias tiene más sentido, y se decidió hacer referencia a ese objeto a través de <functionName>.prototype .

La cadena prototipo es:

 instance <- Animal.prototype <- Object.prototype

y

 Animal <- Function.prototype <- Object.prototype

Tener instancias también heredadas de Function.prototype y ser funciones simplemente no tendría sentido. Uno casi siempre quiere objetos ordinarios como instancias, no funciones invocables.

Otro beneficio de tener Animal.prototype separado de Animal es que puede tener propiedades en el prototipo y propiedades en la función o clase en sí, lo cual es una buena manera de separar los valores y métodos de instancia de los valores y funciones de utilidad, que están asociados. con la clase, pero no tienen que ver con ninguna instancia en particular.

 function Animal(name) { this.name = name; }; Animal.prototype.bark = function() {console.log(this.name + ' says Woof')}; Animal.checkIsAnimal = function(possibleAnimal) { console.log('Is this an animal? ' + (possibleAnimal instanceof Animal)); }; const mike = new Animal('Mike'); Animal.checkIsAnimal({}); Animal.checkIsAnimal(mike);

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