我试图调用一个必须从当前对象访问私有属性的继承方法。但它只访问公共的,有什么不对?
我的测试代码应警告两个变种:
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/
提前致谢, 亚瑟
答案 0 :(得分:1)
没有错。当您使用var
关键字时,javascript会将该变量限制为当前定义的范围。
这样:
var privateVar = "PRIVATE VAR";
只能从定义的块内部看到,即ChildClass()
请查看此article以获得更深入的解释。