static oder instanz bei einmaliger anwendung?
bearbeitet von Rolf b> > Und unter der einzigen Instanz einer Klasse verstehst Du dann vermutlich das hier:
> ne sorry. ich meinte mit _Objektinstanz_ `new Foo( 'bar' );` und mit _staischer_ Klasse `Foo.bar()`.
Schreibte ich das nicht? Außer dass ich nicht 'bar' an den Konstruktor übergeben habe...
> Ich mein eine Klassen muss ja erst einmal aus der Schablone der Klasse erzeugt werden.
Eine "Schablone der Klasse" gibt es nicht unbedingt. In einer statischen Programmiersprache macht das Meiste der Compiler für Dich, da ist ein new nicht mehr als eine Speicherallocation auf Stack oder Heap (was nur messbare Zeit kostet wenn der Müllsammler loslaufen muss) und das Kopieren von ein paar Bytes an Daten, die auf die VFT verweisen (Siehe "Vererbung" vom 31.01.17). In JavaScript kommt's drauf an, da baust Du entweder ein Prototypobjekt, und zwar genau einmal, und das ist genauso schnell wie das Erzeugen einer "statischen Klasse". Beim new MyClass() wird dein Prototyp zum Prototyp des neuen Objekts. Dafür wird genau eine Objektreferenz kopiert. Oder Du erzeugst die Instanzmethoden dynamisch im Konstruktor, und DANN wird's langsamer, weil dann für jede Methode ein Funktionsobjekt erzeugt wird. Im Falle eines Singleton-Objekts ist das aber auch wieder egal.
> Klingt für mich nach mehr Aufwand als wenn eine statische klasse verwende die schon bereigestellt ist.
Ja schon. Aber es ist vor allem Schreibaufwand. Der Runtime-Aufwand wird kaum messbar sein.
Und wie schon mal gesagt, das entscheidende Kriterium für statische Klasse vs Singleton-Objekt ist, dass das Singleton-Pattern für JavaScript wenig relevant ist, weil die Sprache andere Möglichkeiten bereitstellt.
_Rolf_