Hallo zusammen,
leider komme ich selbst auf keine Lösung und hoffe hier auf Hilfe. Die Problembeschreibung ist schon schwierig, daher eine Erläuterung:
Ich habe eine Class
Ziel ist es, das die erzeugte
Das war mein erster Gedanke, aber die Objekterstellung erfolgt zu früh, daher ist die
Hier der zweite Versuch:
Wollte die Erzeugung des
Habe schon überlegt die
leider komme ich selbst auf keine Lösung und hoffe hier auf Hilfe. Die Problembeschreibung ist schon schwierig, daher eine Erläuterung:
Ich habe eine Class
Liste
(= Doubly Linked List) die mit den einzelnen Objekten ListNode
befüllt wird.ListNode
enthält zwei für dieses Problem relevante Attribute UID
(= eindeutige ID) und Ref
(= Referenz zu einem weiteren Objekt, hier Child).Ziel ist es, das die erzeugte
UID
vom direkten Listenobjekt ListNode
auch für die Erzeugung des Child
-Objekts genutzt wird. D.h.: Sowohl das Listenobjekt als auch seine Referenz sollen dieselbe UID
bekommen.Das war mein erster Gedanke, aber die Objekterstellung erfolgt zu früh, daher ist die
UID
vom ListNode
noch nicht bekannt:
Code:
class ListNode {
constructor( Obj) {
this.prev = null;
this.next = null;
this.UID = this.getUID();
this.Ref = Obj;
}
getUID() { return "generated-UID" }
}
class Child {
constructor( UID) {
this.UID = UID;
}
}
let tmp = new ListNode( new Child() ); // hier wird bereits das Child-Object erzeugt, daher kann im Konstruktor von ListNode die UID nicht mehr hinzugefügt werden
Hier der zweite Versuch:
Wollte die Erzeugung des
Child
-Objects innerhalb des Konstruktors von ListNode
durchführen. Aber this.Ref
beinhaltet dann keine Referenz auf das Child
-Object, somit ist dann ein Zugriff von der Liste auf das Child
-Object nicht möglich. Oder mache ich hier grundätzlich etwas falsch?
Code:
class ListNode {
constructor( cb) {
this.prev = null;
this.next = null;
this.UID = this.getUID();
this.Ref = cb( this.UID);
}
getUID() { return "generated-UID" }
}
class Child {
constructor( UID) {
this.UID = UID;
}
}
function cb( UID){ return new Child( UID) };
let tmp = new ListNode( cb );
console.log( tmp.Ref.UID); // -> undefined
console.log( tmp.Ref.constructor.name); // -> Function
Habe schon überlegt die
UID
innerhalb des Child
-Obj zu generieren und innerhalb der Liste greife ich dann nicht mit this.UID
sondern mit this.Ref.UID
zu. Aber allgemein wüsste ich gerne wie ich das beschriebene Problem löse; so lerne ich zumindest dazu. Die Klasse "Child
" dient hier nur als Pseudonym für verschiedene Klassen, die ich verwende. Die Überlegung, das Child-Objekt direkt als ListNode
zu verwenden hatte ich auch schon, aber ein Sortier-Algorythmus müsste dann mehrere Attribute switchen, statt nur eine einzelne Referenz.