es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, puedes utilizar la palabra clave this dentro del método estático makeNew de la clase MyBase. La palabra clave this se refiere a la clase actual que está llamando al método. Aquí está el código modificado:

    class MyBase{
        static makeNew(id){
            const newInstance = new this();
            newInstance.id = id;
            return newInstance;
        }
    }
    
    class A extends MyBase{}
    class B extends MyBase{}
    
    const newA = A.makeNew(1);
    const newB = B.makeNew(379);
    

    En este código, this en el método makeNew se referirá a A cuando se llame desde A, y a B cuando se llame desde B. Por lo tanto, new this() creará una nueva instancia de la clase actual, y newInstance.id = id establecerá su propiedad id.

Comments are closed.