ES6静态方法指的是自我?

时间:2015-12-02 20:13:55

标签: javascript static ecmascript-6

我有两个classe;存储库和UserRepository。我想在Repository中定义一个静态方法,它在运行时调用UserRepository中的静态函数。有没有干净的方法来做到这一点?

class Repository {
    static printModel() {
        return console.log(this.constructor.model())
    }
}

class UserRepository extends Repository {
    static model() {
        return "I am a user";
    }
}

UserRepository.printModel(); // Doesn't work; want it to print "I am a user"

现在上述不起作用是有道理的,因为这可能是对一个实例的反应,在这种情况下我没有实例。

我的问题是,如何从基类中引用子类方法model()

1 个答案:

答案 0 :(得分:2)

  

现在上述不起作用是有道理的,因为这可能是对一个实例的反应,在这种情况下我没有实例。

不,this如何引用一个实例,就像你说你没有?

不,静态方法也只是像任何其他方法一样的函数,this指的是它们被调用的任何东西。在UserRepository.printModel();中,this会引用UserRepository。您只需使用this.model()来调用该类的静态.model()方法。