¿Cómo llamar a una función estática de un niño desde el padre en javascript?
Tal vez lo que estoy buscando sea imposible, pero sería muy conveniente para mis necesidades.
class Music extends Database {
static ref(id){return <code>musics/${id}</code>}
}
class Book extends Database {
static ref(id){return <code>books/${id}</code>}
}
class Database {
static fetch(id){
const data = request(Database.children.ref(id)) // <===== AQUÍ, por supuesto, no existe la función 'children'
return new this(data)
}
}
Music.fetch(‘1234’)
Book.fetch(‘9876’)
¿Cómo llamar a la función estática ‘ref’ desde la función estática ‘fetch’ en la clase padre?
Esto evitará copiar la función ‘fetch’ en todas las clases hijas.
Si esta solución es un anti-patrón, ¿qué puedo hacer?
davy.ai
Desafortunadamente, no es posible llamar directamente a un método estático de una clase padre en una clase hija. Una solución alternativa podría ser pasar la propia clase como parámetro al método estático de la clase padre y luego llamar al método estático desde la clase hija pasando la clase hija como parámetro. Aquí tienes un ejemplo:
De esta manera puedes evitar duplicar la función
fetch
en cada clase hija, pero requiere pasar la clase hija al método padre. Otra alternativa podría ser utilizar una función de fábrica para crear instancias de las clases hijas, lo cual eliminaría la necesidad de un métodofetch
por completo.