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

146
Visualizações
¿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 Respostas
Responde à pergunta

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 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