JavaScript の静的変数
オブジェクト指向プログラミングでは、静的変数はインスタンスではなくクラスに関連付けられます。プロトタイプベースの継承モデルに従う JavaScript では、静的変数の概念はさまざまなアプローチを通じて実現できます。
コンストラクター関数のアプローチ:
導入前ES6 クラスでは、JavaScript はオブジェクトの作成にコンストラクター関数を利用しました。コンストラクター関数内では、その関数のスコープ内でのみアクセスできるプライベート変数を定義できます。一方、パブリック変数とパブリック メソッドは、インスタンスの this オブジェクトに割り当てることができます。さらに、コンストラクター関数オブジェクト自体に静的プロパティを追加できます。これはすべてのインスタンスで共有されます。
次の例を考えてみましょう。
function MyClass() { var privateVariable = "foo"; this.publicVariable = "bar"; this.privilegedMethod = function() { alert(privateVariable); }; } // Instance method available to all instances (loaded once) MyClass.prototype.publicMethod = function() { alert(this.publicVariable); }; // Static property shared by all instances MyClass.staticProperty = "baz"; var myInstance = new MyClass();
この例では、staticProperty は次のように定義されています。 MyClass 関数であり、MyClass のすべてのインスタンスにアクセスできます。
ES6 クラス構文アプローチ:
ES6 では、クラスを宣言するための class キーワードが導入されました。クラスでは、static キーワードを使用して静的プロパティまたはメソッドを定義できます。これらの静的メンバーには、クラス名自体を通じてアクセスできます。
ES6 クラスで実装された前の例は次のとおりです。
class MyClass { constructor() { const privateVariable = "private value"; this.publicVariable = "public value"; this.privilegedMethod = function() { console.log(privateVariable); }; } publicMethod() { console.log(this.publicVariable); } static staticProperty = "static value"; static staticMethod() { console.log(this.staticProperty); } } var myInstance = new MyClass(); myInstance.publicMethod(); // "public value" myInstance.privilegedMethod(); // "private value" MyClass.staticMethod(); // "static value"
どちらのアプローチでも、JavaScript で静的変数を作成する方法が提供されます。 ES6 クラス構文はよりクリーンで簡潔なメソッドを提供し、コンストラクター関数のアプローチはインスタンス メソッド内のプライベート変数にアクセスするための柔軟性を高めます。
以上がJavaScript で静的変数を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。