從非靜態ES6 類別方法呼叫靜態方法
使用ES6 類別時,您可能會遇到需要從下列位置存取靜態方法的情況:在非靜態類別方法中。有兩個主要選項可以實現此目的:使用建構函式或直接引用類別名稱。雖然這兩種方法在技術上都是可行的,但它們在重寫靜態方法的繼承上下文中表現出不同的行為。
選項 1:使用建構子
在此例如,靜態方法 print 是透過建構子 this.constructor 存取的。這種方法可以確保調用正確的靜態方法,即使擴展了類別並且在子類別中重寫了靜態方法。
選項 2:直接引用類別名稱
在這種情況下,靜態方法 print 由其類別名稱引用。該方法本質上是靜態的,並且始終會傳回類別中定義的原始值,無論有任何繼承關係。
繼承和重寫注意事項
使用建構子之間的選擇或在處理繼承和重寫的靜態方法時,類別名稱直接變得很重要,如圖下方:
案例1:使用Super.whoami()
情況2:使用this.constructor.whoami()
這些場景中的行為可能會有所不同,這取決於靜態方法是否實際上被重寫。透過類別名稱引用靜態屬性提供了真正的靜態行為,而使用 this.constructor 則允許動態分派和繼承考慮。選擇適當的方法取決於給定上下文中所需的行為。
以上是如何從非靜態 ES6 類別方法呼叫靜態方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!