プロトタイプ定義関数からプライベート メンバー変数へのアクセス
JavaScript では、コンストラクター内で定義されたプライベート メンバー変数にプロトタイプからアクセスできません。定義されたメソッド。これは、次のコード スニペットで明らかです。
TestClass = function(){ var privateField = "hello"; this.nonProtoHello = function(){alert(privateField)}; }; TestClass.prototype.prototypeHello = function(){alert(privateField)};
nonProtoHello は privateField に正常にアクセスしますが、prototypeHello は失敗します。
Reasoning
関数 (プロトタイプを含む) -定義されたメソッドは、それらが定義されているスコープにアクセスできます。プライベート メンバー変数はコンストラクター スコープ内で定義されているため、プロトタイプで定義されたメソッドにはアクセスできません。
解決策
プロトタイプ メソッドにプライベート変数へのアクセスを提供するには:
例:
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()); };
このアプローチにより、プロトタイプ定義のメソッドは、カプセル化を維持しながら、ゲッターおよびセッターを介してプライベート メンバー変数と対話できるようになります。
以上がJavaScript のプロトタイプ定義関数からプライベート メンバー変数にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。