0
我想調用必須從當前對象訪問私有屬性的繼承方法。但它只能訪問公共的,出了什麼問題?如何訪問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調用它的作用域應該與我聲明的privateVar相同。在相同的範圍內,它必須是可訪問的,或者不是? – user1192922 2012-02-06 18:28:15
不,函數'priviliegedMethod'無法訪問'privateVar'。就像我說的那樣,這個變量被限制在'ChildClass()'函數 – ggreiner 2012-02-06 19:01:21
是的,現在我明白了。感謝您的解釋。 – user1192922 2012-02-07 16:43:27