プロトタイプ定義関数からプライベート メンバー変数にアクセスする
JavaScript では、クラスのコンストラクター内でメソッドを定義するときに、プライベート メンバー変数にアクセスできます。コンストラクター内で宣言された変数。ただし、プロトタイプでメソッドを定義する場合、これらのプライベート変数へのアクセスが問題になります。
説明すると、
<code class="js">function TestClass() { var privateField = "hello"; this.nonProtoHello = function() { alert(privateField); }; } TestClass.prototype.prototypeHello = function() { alert(privateField); };</code>
t.nonProtoHello() を呼び出すとプライベート privateField に正しくアクセスしますが、t.prototypeHello () はエラーをスローします。これは、プロトタイプ定義のメソッドがコンストラクターのスコープ内で定義されていないため、そのローカル変数にアクセスできないためです。
残念ながら、プロトタイプ定義の関数からプライベート変数に直接アクセスする方法はありません。ただし、ゲッターとセッターを使用して同様の機能を実現できます。
<code class="js">function Person(name, secret) { // Public this.name = name; // Private var secret = secret; // Public methods have access to private members this.setSecret = function(s) { secret = s; } this.getSecret = function() { return secret; } } // Must use getters/setters Person.prototype.spillSecret = function() { alert(this.getSecret()); };</code>
この例では、プライベート変数 Secret は、ゲッター関数とセッター関数を介してプロトタイプ定義のメソッドにアクセスできます。
以上がJavaScript のプロトタイプ定義関数からプライベート メンバーにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。