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

320
Vistas
En Javascript, al pasar una clase declarada como argumento a Object.getPrototypeOf, el resultado se refiere a la clase principal. ¿Porqué es eso?

Por ejemplo :

 class Parent { foo() { console.log("foo"); } } class Child extends Parent { bar() { console.log("bar"); } }

Aquí, la expresión

 Object.getPrototypeOf(Child) === Parent

evaluaría como verdadero.

Ahora entiendo los conceptos básicos de la herencia prototípica y cómo funcionan las clases en Javascript, es decir, cada función tiene una propiedad prototype , que se copia en la propiedad __proto__ de la instancia de clase recién creada al llamar a la función con el new operador.

También entiendo que Object.getPrototypeOf esencialmente devuelve la propiedad __proto__ de cualquier objeto dado y, en general, simulamos la herencia en javascript puro mediante la configuración de la propiedad prototype de la clase secundaria en una instancia de la clase principal, como esta:

 function Parent(){} Parent.prototype.foo = function(){ console.log("foo"); } function Child(){} // Inherit properties from Parent Child.prototype = new Parent();

Mis preguntas son:

  • ¿Qué representa el resultado de Object.getPrototypeOf cuando se llama con una clase como argumento? ¿Cómo se vincula a la herencia de clases en TS/JS?

  • ¿Es seguro usar Object.getPrototypeOf para verificar si una clase en particular extiende otra clase en tiempo de ejecución?

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

0

La palabra clave extends hace dos cosas:

  • Establece el objeto SuperClass.prototype como el prototipo del objeto SubClass.prototype. En su caso, Child.prototype obtiene el objeto Parent.prototype como su prototipo.

  • También establece el constructor de la superclase como prototipo del constructor de la clase secundaria. En su caso, el constructor secundario Child constructores Parent como su prototipo.

Las dos declaraciones anteriores significan esencialmente lo siguiente en el código:

 class Parent {} class Child extends Parent {} console.log(Object.getPrototypeOf(Child.prototype) === Parent.prototype); console.log(Object.getPrototypeOf(Child) === Parent);

En otras palabras, la palabra clave extends establece dos cadenas de prototipos:

 Child.prototype ---> Parent.prototype ---> Object.prototype Child ---> Parent ---> Function.prototype ---> Object.prototype

Entonces, Object.getPrototypeOf(Child) simplemente Parent el constructor principal.

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