Доступ к переменной базовых классов из дочернего класса - PullRequest
1 голос
/ 05 ноября 2011

В javascript возможно ли для дочернего класса получить доступ и изменить переменную базового класса?Если нет, то есть ли способ создать привилегированную переменную?Я знаю, что вы можете создавать привилегированные функции, но как насчет привилегированных переменных?

Вот моя попытка:

  function BaseClass()
  {
     var privateMap = {"type": "BaseClass"};
  }

  function ChildClass()
  {
     // How can I access BaseClass's private variable privateMap?
     privateMap["type"] = "ChildClass";
  }

  ChildClass.prototype             = new BaseClass();
  ChildClass.prototype.constructor = ChildClass;

Ответы [ 2 ]

0 голосов
/ 05 ноября 2011
var Base = function() 
  {
    var privateMap = {"type":"Base"};

    this.changeMap = function(arg) {
        privateMap['type'] = arg;
        console.log('Changed Map to ' + privateMap['type'])
    }

}
var Child = new Base;

Child.changeMap('Child1')

console.log(Child.privateMap)//undefined
0 голосов
/ 05 ноября 2011

Вам нужно будет выставить privateMap в BaseClass:

BaseClass.prototype.privateMap = {"type": "BaseClass"};

Затем вы получите доступ к нему в ChildClass:

BaseClass.prototype.privateMap["type"] = "ChildClass"; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...