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
die JavaScript Laufzeitumgebung in der Instanz selbst
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.