Как подкласс может получить переменную экземпляра суперкласса?

#javascript #prototypal-inheritance

#javascript #прототипное наследование

Вопрос:

В приведенном ниже коде есть 2 класса, один из которых — Node, а другой — Btree. Если экземпляр split () вызывается на узле, я хотел бы создать новый узел, сохранить его как родительский и изменить корневой узел Btree.

Как узел может получить доступ к Btree.root? Должен ли я использовать наследование классов?? (Этот код не является полным кодом, поэтому может быть какая-то ошибка … хотя я просто хочу получить представление об этом)

     Node = function(dimension,root){
        this.root = root;
        this.parent = null;
    }

    Node.prototype.split = function(
        var tmp = new Node();
        if(!this.parent){
            var soon_to_be_root = new Node();
            this.parent = soon_to_be_root;
        }
    }
    Btree = function(dimension){
        this.d = dimension;
        this.root = new Node(dimension,true);
    }
  

Ответ №1:

Если Btree является одноэлементным объектом, то:

 var soon_to_be_root = new Node;
Btree.root = soon_to_be_root;
  

Если Btree является классом и у вас есть много их экземпляров, тогда вам нужно связать их. Есть ли у узла Btree? Есть ли у Btree узел? Если любой из этих вариантов верен, то вам следует передать экземпляр одного при создании экземпляра другого.

Если, с другой стороны, узел «является» Btree или Btree «является» Node, тогда уместно наследование.