Moin.
In Fall 1 weist du dem Objekt selbst im Konstruktor Eigenschaften zu - d.h., jedes Mal, wenn du per new ein neues Objekt erzeugst, muss der entsprechende Code ausgeführt werden.
Im zweiten Fall weist du die Eigenschaften einmalig dem Prototyp zu. Dafür wird jedoch jeder Aufruf der Eigenschaft verzögert: Erst, nachdem die Eigenschaft im Objekt nicht gefunden wurde, wird der Prototyp zur Namensauflösung bemüht.
» Welche Schreibweise ist zu bevorzugen?
Kommt drauf an ;). Du kannst ja mal selbts tätig werden und überprüfen, wie oft du auf eine Eigenschaften zugreifen musst, damit der Unterschied in der Namensauflösung mesbar wird (vermutlich SEEEHR oft ;)).
Meine persönliche Empfehlung wäre, alle Eigenschaften, die sich in den einzelnen Instanzen nicht voneinander unterscheiden (also insbesondere Konstanten und Methoden) dem Prototyp zuzuweisen und im Konstruktor tatsächlich nur Instanz-spezifische Berechnungen und Zuweisungen durchzuführen. Methodenzuweisungen würden sich also nur dann im Konstruktor finden, wenn du z.B. Zugriff auf per Closure bereitgestellte 'private' Eigenschaften benötigst.
Christoph