Creo que mejor aclaro un poco cual era mi idea, porque me di cuenta que no exprese todo, y el tema de la herencia en JS me vuelve medio loco jeje. Mas que tengo una base de Java, y la flexibilidad de JS me marea jaja.
Mi idea de la jerarquia era tener un padre que auspice de DAO (x el tema de la BD). Yo quería a ese padre (EntidadAbstracta, ahora llamado EntidadBase) que tuviera "métodos de clase" (statics, no requieren instanciación): buscarPorId, filtrar...insertar. Por otro lado algunas constantes y/o funciones que serian las que tendrían relevancia en los hijos: nombre de la Tabla, id de la Entidad.
Ahora dado que mi base de JS es media pobre, al intentar emular la herencia se me complico, mas esta idea que tenia en mente.
Por otro lado, tengo entendido que
EntidadBase.buscarPorId=func.. seria un "método de clase",
y EntidadBase.prototype.buscarPorId=funct.. uno propio del objeto. Lo que note es que al hacer herencia, ya sea via
utili.inherits o
Object.create(EntidadBase.prototype) no heredo los de clase. Esto hizo que en el hijo (Entidad) sobreescribiera el método llamando al del padre via call, asi logre ejecutarlo con los datos del hijo (tabla, id, incluso lograr instanciar su clase). Es mas yo deseaba que el padre "instancie a los hijos" cuando use el buscarPorId..etc.
Asi que tengo implementado algo a lo "bruto"
EntidadBase y
Entidad. ¿Como logro heredar esos metodos de clase?. Parte de la mala implementacion es por mi base de JS + el problema ese de los metodos no heredados, y por eso puse algunas lineas bastantes sucias.
En el codigo se ve ni necesdidad de instanciar en el padre a los hijos: use primero una "constante" (algo bien chancho)
Entidad.constanteClase, pero después, dado mi problema, en el hijo hago un:
Entidad.buscarPorId=function(id,callback){
EntidadBase.buscarPorId.call(this,id,callback)
}
Y con esto, en el padre aprovecho a crear un hijo.
El tema de explayarme es para aprovechar mejor la consulta, ver si el esquema sirve o no,etc. Y segundo se que con nodejs, no podría convertir los métodos de clase a "públicos del modulo" (exports.EntidadBase.buscarPorId...), porque no me servirían para la jerarquía. Tal vez tenga mal entendido los conceptos.
Si consideran que ahora mi consulta excede los temas a tratar en el grupo, les pido disculpas de antemano. Desde ya les agradezco!!!