Olá!
Há alguns pontos a serem destacados antes de chegarmos no resultado.
Começando pelo constructor(), se sua classe não possui atributos para serem inicializados por ele, não há necessidade de declará-lo. Caso a classe pai (Ping) possuísse atributos, aí sim seria necessário inicializá-los no constructor , sendo preciso também adicionar o método super() no constructor da classe filha (Pingpong) para que o comportamento da classe pai fosse herdado.
class Ping {
ping() {
return 'ping'
}
}
Na classe Pingpong, pelo mesmo motivo citado acima, não há necessidade dela possuir um constructor(), já que ela não está herdando atributos da classe pai e nem possui atributos exclusivos. Outro problema nesta classe é que você está tentando retornar a referência da função ping ao invés do resultado da sua execução. Para você executar uma função, é necessário adicionar () após sua referência.
class Pingpong extends Ping {
pingpong() {
return super.ping() + 'pong'
}
}
Por fim, é preciso instanciar a classe antes de utilizá-la. Depois de instanciada, seus métodos e atributos podem ser utilizados (Não esquecer de adicionar () para que a função seja executada).
const pp = new Pingpong()
console.log(pp.pingpong())
Código completo:
class Ping {
ping() {
return 'ping'
}
}
class Pingpong extends Ping {
pingpong() {
return super.ping() + 'pong'
}
}
const pp = new Pingpong()
console.log(pp.pingpong())
// resultado: pingpong