0
現在のオブジェクトからプライベート属性にアクセスする必要がある継承されたメソッドを呼び出そうとしています。しかし、それは公共のものにしかアクセスしません、何が間違っていますか?両方のVARSに警告すべきJavaScriptで継承されたメソッド内のプライベート属性にアクセスする方法
私のテストコード:
function ParentClass(){
//Priviliged method to show just attributes
this.priviligedMethod = function(){
for(var attr in this){
if(typeof(this[ attr ]) !== 'function'){
alert("Attribute: " + this[ attr ]);
}
}
};
}
function ChildClass(){
// Call the parent constructor
ParentClass.call(this);
var privateVar = "PRIVATE VAR";
this.publicVAR = "PUBLIC VAR";
}
// inherit from parent class
ChildClass.prototype = new ParentClass();
// correct the constructor pointer because it points to parent class
ChildClass.prototype.constructor = ChildClass;
var objChild = new ChildClass();
objChild.priviligedMethod();
jsfiddleバージョン:事前にhttp://jsfiddle.net/gws5s/6/
おかげで、 アーサー
okですが、ParentClassを継承するときはpriviligedMethodも継承されるので、ChildClassから呼び出すと、scopeは私がprivateVarを宣言したものと同じでなければなりません。同じスコープ内でアクセス可能である必要がありますか? – user1192922
いいえ、関数 'priviliegedMethod'は' privateVar'にアクセスする手段がありません。私が言ったように、その変数は 'ChildClass()'関数に制約されています – ggreiner
はい、今私は参照してください。説明してくれてありがとう。 – user1192922