Как получить доступ к закрытым атрибутам внутри унаследованного метода в JavaScript - PullRequest
0 голосов
/ 06 февраля 2012

Я пытаюсь вызвать унаследованный метод, который должен получить доступ к закрытым атрибутам текущего объекта.Но это только общедоступные, что не так?

Мой тестовый код должен предупреждать обе переменные:

            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 Ответ

1 голос
/ 06 февраля 2012

Нет ничего плохого.Когда вы используете ключевое слово var, javascript сделает эту переменную ограниченной текущей областью, в которой она определена в настоящее время.

, поэтому:

var privateVar = "PRIVATE VAR";

будет виден только изнутри блокаоно определено, а именно ChildClass()

Ознакомьтесь с этой статьей для более подробного объяснения.

...