如何在JavaScript中访问继承方法中的私有属性

时间:2012-02-06 18:00:17

标签: javascript oop inheritance private private-members

我试图调用一个必须从当前对象访问私有属性的继承方法。但它只访问公共的,有什么不对?

我的测试代码应警告两个变种:

            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/

提前致谢, 亚瑟

1 个答案:

答案 0 :(得分:1)

没有错。当您使用var关键字时,javascript会将该变量限制为当前定义的范围。

这样:

var privateVar = "PRIVATE VAR";

只能从定义的块内部看到,即ChildClass()

请查看此article以获得更深入的解释。