Я хочу иметь 3 класса, которые связаны между собой.A Node class a DoorNode class и SisterDoorNode class.
Существуют различные типы узлов, у всех из которых есть id, позиция, соединения и несколько функций.
Один из этих типов - это дверные узлы, которые, как и родственные дверные узлы, имеют тип узла "дверь", соответствующий элемент и несколько функций.Их идентификатор и позиция рассчитываются одним способом.
Тогда есть также сестринские дверные узлы.У них есть другой способ вычисления идентификатора и позиции, а также логическое значение, в котором говорится, что они являются сестринскими дверными узлами.
Вот как я хотел, чтобы это выглядело:
class Node {
constructor(id, pos) {
this.id = id;
this.pos = pos;
this.connections = [];
}
addConnection(c) {
//A few functions all nodes need
}
}
class DoorNode extends Node {
constructor(door) {
//Both of these are needed for all Nodes but are calculated in a different way for DoorNode and SisterDoorNode
let id = this.getId(door);
let pos = this.getPos(door);
super(id, pos);
//Both of these are needed in SisterDoorNode and DoorNode
this.nodeType = "door";
this.correspondingElement = door;
}
getId(door) {
return door.id;
}
getPos(door) {
return door.pos;
}
getDoorSize() {
//Some calculations I need for both DoorNode + SisterDoorNode
}
}
class SisterDoorNode extends DoorNode {
constructor(door) {
super(door);
this.isSisterNode = true;
}
getId(door) {
return door.id + ".2";
}
getPos(door) {
return new Point(door.pos.x + 10, door.pos.y + 10);
}
}
но так как я не могу использовать this до super () , это не работает.Как лучше всего решить эту проблему?