soweit ich Prototyping verstanden habe, muss nach dem Schlüsselwort "prototype" der Name einer Eigenschaft oder Methode stehen.
Prinzipiell kann man der prototype-Eigenschaft jeden beliebigen Wert zuweisen. Anfangs enthält sie ein leeres(*) Objekt, dem man Eigenschaften und Methoden in der von dir beschriebenen Weise hinzufügen kann:
func.prototype.neueEigenschaft = "foofoo";
func.prototype.neueMethode = function () {};
Man kann die ganze Eigenschaft aber auch überschreiben. Eben mit dem Objekt, das als Prototyp für die Instanzen dient. Das kann ein eigenes sein oder irgendein bestehendes, an welches delegiert werden soll.
func.prototype = {
neueEigenschaft : "foofoo",
neueMethode : function () {}
};
oder eben
func.prototype = window; // Ergibt i.d.R. wenig Sinn, ist aber möglich
vgl. http://molily.de/js/organisation-instanzen.html
(*) Es ist nicht komplett leer, sondern es gibt eine nicht durch for-in erreichbare Eigenschaft constructor, welche man löscht, wenn man den Wert von prototype mit einem eigenen Objekt überschreibt. Daher ist das Erzeugen von Membern mittels func.prototype.neueEigenschaft = ... schon sehr brauchbar.
Mathias