Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

317
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!