ES6 クラスでは、静的メソッドは 2 つの主なメソッド (コンストラクターまたはクラス名経由) を通じて呼び出すことができます。ただし、これらのアプローチは、オーバーライドされた静的メソッドを使用した継承シナリオに関しては動作が異なります。ニュアンスを詳しく見てみましょう。
コンストラクターを介した静的メソッドの呼び出しには、次の構文が含まれます:
this.constructor.methodName(arguments);
このメソッドは、定義された静的メソッドを常に参照します。継承やオーバーライドに関係なく、コンストラクターのクラス内で。これにより、静的プロパティの動作が静的なままとなり、常に元のクラスに関連付けられた値が返されることが保証されます。
静的メソッドは、クラス名を使用して直接呼び出すこともできます。
ClassName.methodName(arguments);
このアプローチは、現在のクラスで定義されている静的プロパティを参照します。クラスがスーパークラスから静的プロパティを継承している場合、静的メソッドは動的ディスパッチを使用し、現在のインスタンスのクラスを参照します。つまり、インスタンスのクラスで静的プロパティがオーバーライドされた場合、メソッドはオーバーライドされたバージョンを参照しますが、オーバーライドされていない場合は、継承されたバージョンを参照します。
どの方法を使用するかは、目的に応じて選択します。動作:
これらのメソッドの違いを理解することで、静的メソッドを適切に処理できるようになります。 ES6 クラス、特に継承シナリオで。
以上がES6 クラスで継承のある静的メソッド呼び出しはどのように動作しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。