Pseudoklassische Vererbung in JavaScript - Teil 3
Note: This post is from my old blog and thus written in German and potentially obsolete.
Hier Teil 3 der Reihe zum Thema “Pseudoklassische Vererbung in JavaScript”, basierend auf Stoyan Stefanovs Buch “JavaScript Patterns”.
4. Der gemeinsam genutzte Prototyp
Der im letzten Teil vorgestellte Ansatz des geliehenen Konstruktors, führt in Verbindung mit der Festlegung eines Prototyps zum zweimaligen Aufruf des Eltern-Konstruktors, was nicht sehr effizient ist. Das von Stoyan als “gemeinsam genutzer Prototyp” bezeichnete Muster Nr. 4 verzichtet gänzlich darauf den Eltern-Konstruktor aufzurufen.
Eigenschaften eines Konstruktors, die nicht “instanzspezifisch” sondern wiederverwertbar sind, sollten wie bereits erwähnt dem Prototyp hinzugefügt werden. Somit kann man anstatt dem Prototyp eines Kindes eine neue Instanz des Eltern-Konstruktors zuzuweisen (Child.prototype = new Parent();
), wie das in den bisher vorgestellten Mustern 1, 2 und 3 der Fall war, auch direkt dessen Prototyp verwenden:
Child.prototype = Parent.prototype;
Somit verweisen alle Objekte auf den selben Prototyp, was einen performanten Zugriff auf dessen Eigenschaften ermöglicht.
Bei diesem Ansatz ist zum einen zu beachten, dass eine Veränderung des Prototyps sich auf alle Objekte auswirkt, und zwar von den Eltern zu den Kindern und umgekehrt. Verändert also ein Kind den Prototyp, dann sind auch die Eltern von dieser Veränderung betroffen.
Zum anderen werden die dem Eltern-Konstruktor über this
hinzugefügten Eigenschaften nicht an die Kinder vererbt. Dies ist sinnvoll, da die zu vererbende Eigenschaften wie gesagt dem Prototyp hinzugefügt werden sollten.