2015-12-02 24 views
3

我有兩個類;存儲庫和UserRepository。我想在Repository中定義一個靜態方法,在運行時調用UserRepository中的一個靜態函數。有沒有乾淨的方式來做到這一點?ES6靜態方法是指自我?

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" 

現在,它是有道理的,上面不起作用,因爲這可能referes到一個實例,我已經在這種情況下沒有實例。

我的問題是,我如何從基類中引用子類方法model()

+2

剛剛測試過它和'this.model();'似乎有訣竅。你嘗試過嗎? – 2015-12-02 20:23:25

回答

2

現在它是有道理的,上述不起作用,因爲這可能反對一個實例,並且在這種情況下我沒有實例。

不,請問this指的是一個實例,如你所說沒有任何實例?

不,靜態方法就像其他任何方法一樣,並且this引用它們被調用的任何方法。在UserRepository.printModel();,this將參考UserRepository。您可以使用this.model()來調用該類的靜態.model()方法。