molily: public objects in der Konstruktor-Funktion / performance

Beitrag lesen

Die Eigenschaften dieser Objekte rufe ich in den öffentlichen und privaten Methoden und den Event-Handlern sehr oft auf -
Frage: Ist dieses Vorgehen sinnvoll - und geht es auf Kosten der performance?

Sinnvoll ist es auf jeden Fall, da es deinen Code besser strukturiert.

Es kostet natürlich Performance. Ein Property Lookup wie objA.objB.objC.objD braucht ein bisschen Zeit. Die Frage ist, ob sich das merklich negativ auswirkt. Das solltest du einfach testen, indem du die Performance vergleichst. Ich würde vermuten, dass das in heutigen Browsern kein großes Problem mehr ist und wegoptimiert wird.

Wenn ich innerhalb einer Funktion/Methode mehrfach auf bspw. this.Game.selection.cards zugreife, empfiehlt es sich da, anfangs den Wert in eine private Variable zu speichern: var cards = that.Game.selection.cards?

Im Prinzip ja, diese Regel sollte man allein schon verfolgen, um Wiederholungen im Code zu vermeiden und ihn lesbarer zu machen. Allgemein solltest du die Namensraum-Hierarchien möglichst flach halten, dabei können Shortcut-Variablen bei helfen.

Es mag die Performance sicher verbessern, aber vermutlich nicht signifikant. Wenn du optimieren willst, dann untersuche per Profiling an, welche Teile deiner Anwendung Rechenzeit fressen. Üblicherweise sind das nicht Property-Lookups (sofern nicht noch in der Prototype-Chain gesucht werden muss), sondern DOM-Operationen, Layouting und Painting.

Optimiere die Teile, die Millionen mal ausgeführt werden, z.B. Render-Funktionen. Bei einer Funktion, die mit 60 Frames ausgeführt wird, zeigt sich, wie langsam manche Property Lookups sein können.

Alles in allem bin ich noch sehr unschlüssig, wann eigene Objekte (mit oder ohne Methoden) sinnvoll sind.

Setze sie immer dann ein, wenn sie dein Programm und deine Daten besser strukturieren können.

Mathias