¿Existe alguna forma de hacer referencia a “la clase actual” desde un método de una clase de Javascript?
Me pregunto si hay alguna manera de hacer referencia a la “clase actual” en lugar de una clase por nombre, desde dentro de una clase de JavaScript.
Por ejemplo:
class MyBase{
static makeNew(id){
const newInstance = new --currentClass--;// aquí ocurre la magia
newInstance.id = id;
return newInstance;
}
}
class A extends MyBase{}
class B extends MyBase{}
const newA = A.makeNew(1);
const newB = B.makeNew(379);
¿Existe alguna manera de escribir MyBase::makeNew
de tal manera que cuando se llame desde la clase A
, devuelva una nueva instancia de A
, pero cuando se llame desde la clase B
, devuelva una nueva instancia de B
?
davy.ai
Sí, puedes utilizar la palabra clave
this
dentro del método estáticomakeNew
de la claseMyBase
. La palabra clavethis
se refiere a la clase actual que está llamando al método. Aquí está el código modificado:En este código,
this
en el métodomakeNew
se referirá aA
cuando se llame desdeA
, y aB
cuando se llame desdeB
. Por lo tanto,new this()
creará una nueva instancia de la clase actual, ynewInstance.id = id
establecerá su propiedadid
.