プロトタイプ定義関数からのプライベート メンバー変数へのアクセス
JavaScript では、コンストラクター内で宣言されたプライベート変数にメソッドから直接アクセスできません。プロトタイプで定義されています。このシナリオは、次のコード スニペットで確認できます。
TestClass = function(){ var privateField = "hello"; this.nonProtoHello = function(){alert(privateField)}; }; TestClass.prototype.prototypeHello = function(){alert(privateField)}; // This executes successfully: t.nonProtoHello() // This fails: t.prototypeHello()
この動作は、コンストラクター内で定義されたメソッドが、定義されているスコープにアクセスするため、プライベート変数にアクセスできるために発生します。ただし、プロトタイプ定義のメソッドはコンストラクターのスコープ内で作成されず、そのローカル変数にアクセスできません。
アクセスのニーズへの対処
直接的な方法はありませんが、プロトタイプ定義メソッドのプライベート変数へのアクセスを許可するには、目的の機能を実現する別のアプローチがあります。
次に例を示します:
function Person(name, secret) { // public this.name = name; // private var secret = secret; // public methods with controlled access this.setSecret = function(s) { secret = s; } this.getSecret = function() { return secret; } } // Prototype-defined method using getters Person.prototype.spillSecret = function() { alert(this.getSecret()); };
要約すると、プロトタイプで定義されたメソッドからのプライベート変数へのアクセスは本質的に制限されていますが、ゲッターとセッターまたは間接アクセスを使用することで柔軟なソリューションが提供されます。これらの変数へのアクセス制御を実現します。
以上がJavaScript のプロトタイプ定義関数からプライベート メンバー変数にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。