ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript オブジェクトの変数にアクセスするために「this.var」を使用する必要があるのはどのような場合ですか?
JavaScript でのオブジェクト変数へのアクセス: this.var かどうか?
JavaScript のオブジェクト指向プログラミング モデルでは、すべての変数がすべてかどうか疑問に思うのが一般的です。オブジェクト内の変数には this キーワードが必要です。
this.var とローカル変数
C のクラスベースのモデルとは異なり、JavaScript はプロトタイプの継承を使用します。プロトタイプの継承では、すべてがオブジェクトであり、オブジェクトは他のオブジェクトから継承できます。
JavaScript では、new キーワードを使用して呼び出されるコンストラクター関数が新しいオブジェクトを作成し、それらにプロパティを割り当てます。コンストラクター内の this キーワードは、新しく作成されたオブジェクトを参照します。
this キーワードを通じてアクセスできるメソッドは、オブジェクトに対して呼び出される関数です。ただし、メソッドのスコープ内で宣言されたローカル変数には、this から直接アクセスできません。
例:
function Foo() { this.bar = 0; this.getBar = function() { return this.bar; }; }
この例では、this.bar はバーを参照します。 Foo インスタンスのプロパティ。ただし、getBar メソッド内の bar は、デフォルトでは未定義のローカル変数を参照します。プロパティにアクセスするには、this.bar を使用する必要があります。
クロージャによるプライベート属性
プライベート属性を作成するには、JavaScript はクロージャに依存します。コンストラクターのスコープ内で定義された関数は、そのコンストラクターのローカル変数にアクセスできます。したがって、コンストラクター内で関数を作成し、特権メソッドとして公開することで、プライベート属性を維持できます。
例:
function Foo() { var bar = "foo"; this.getBar = function() { return bar; }; }
この例では、bar はFoo コンストラクターのローカル変数。 getBar メソッドは、bar にアクセスできる特権メソッドです。
プロトタイプ メソッドと特権メソッド
プロトタイプ オブジェクトで定義されたメソッドは、すべてのインスタンスによって継承されます。ただし、子プロトタイプが親プロトタイプから継承しない限り、特権メソッドにはアクセスできません。
要約すると、メソッド内からオブジェクト プロパティにアクセスするには this.var が必要ですが、ローカル変数には必須ではありません。 。コンストラクター内でクロージャーとして定義される特権メソッドは、JavaScript のオブジェクト指向プログラミング モデルでプライベート属性を作成するためのメカニズムを提供します。
以上がJavaScript オブジェクトの変数にアクセスするために「this.var」を使用する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。