mk-prg-net \ js \ basics \oo \konstruktor-idiom

Konstruktor Idiom

Ein Idiom ist ein, bereits in der Programmiersprache integriertes Design- Pattern.

Durch den new Operator in JavaScript wird die Implementierung von Objekten durch Dictionarys hinter dem Idiom des Objektkonstruktors verborgen.

Technisch betrachtet automatisiert der new Operator zusammen mit dem Konstruktor den Prozess des Anlegens einer leeren Dictionary und dem anschließenden Erweitern um Eigenschften und Methoden. Problemlos können nun beliebig viele gleichartig strukturierte Objekte mittels new Konstruktor erzeugt werden.

Prototypen

Werden Methoden direkt als Eigenschaften von Instanzen gebildet, dann speichert jede Instanz eine individuelle Implementierung der Methode. In Spezialfällen ist dies sinnvoll, allgemein jedoch eine Speicherplatzverschwendung.

Jede Funktion und damit auch Konstruktorfunktion ist in JavaScript ein Objekt mit der speziellen Eigenschaft prototype. Diese verweist auf ein leeres Dictionary {} (=Objekt). Wird nun mittels new über den Konstruktor ein neues Objekt erzeugt, dann verweist auch dessen __proto__- Eigenschaft auf dieses prototype- Objekt des Konstruktors.

Beim Aufruf einer Methode oder Abruf einer Eigenschaft über eine Objektinstanz sucht

  1. die JavaScript Laufzeitumgebung in der Instanz selbst
  2. und wenn sie in 1) nicht fündig wird, dann in dem über __proto__ verwiesenen Prototypenobjekt.

Das prototype Objekt einer Konstruktorfunktion ist damit der ideale Ort für Funktionen und Eigenschaften, die sich alle Instanzen teilen

Statische Member

Aus C++, Java und C# ist das Konzept der statischen Member bekannt. Der Zugriff auf diese bedarf dort keiner Objektinstanz. Stattdessen sind sie über den Name der Klasse erreichbar.

JavaScript kennt kein Klassenkonzept. Jedoch stellt eine Konstruktormethode ein Objket dar (in JavaScript sind alle Funktionen Objekte), dass wie jedes Objekt um Member erweitert werden kann. Member der Konstruktorfunktion können zur Emulation statischer Member genutzt werden.

Pseudoklassische Vererbung

hier.
Starte Test von Astro- Lib