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

157
Vistas
Diferencia entre super y esto al llamar a una función en subclase en js

 class A { data1 = 1; constructor(){ this.data2 = 2; } test() { console.log(this) } } class B extends A { constructor() { super(); } funcA() { this.test() } funcB() { super.test() } } let foo = new B() foo.funcA(); foo.funcB();

¿Cuál es la diferencia entre funcA() y funcB() al llamar, o son exactamente lo mismo? Por cierto, ¿cuál es la diferencia entre data1 y data2 declarados dentro y fuera del constructor, que es el preferido?

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

0

Con this.test() , hace referencia a la instancia . No existe ninguna propiedad de test directamente en la instancia, por lo que, al igual que con la herencia de prototipos estándar, se examina el objeto prototipo en busca de la propiedad. Este prototipo es A.prototype , que tiene una propiedad de test , por lo que se llama.

Con super.test() , en su lugar, comienza a buscar la propiedad de test en la superclase - A.prototype , que se encuentra inmediatamente y se llama.

Si también tuviera un método de test en B, vería la diferencia.

 class A { data1 = 1; constructor(){ this.data2 = 2; } test() { console.log('a') } } class B extends A { constructor() { super(); } test() { console.log('b'); } funcA() { this.test() } funcB() { super.test() } } const foo = new B() foo.funcA(); foo.funcB();

Por cierto, ¿cuál es la diferencia entre data1 y data2 declarados dentro y fuera del constructor, que es el preferido?

Tu decides. Sin embargo, los campos de clase (asignación fuera del constructor) son un poco más concisos (especialmente si su constructor no contiene nada más) pero menos compatibles; si desea usarlos, asegúrese de transpilar su código.

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