Hallo,
Üblicherweise werden die »Klassen«-Definitionen zentral ausgelagert, die Instantiierung erfolgt erst danach. Natürlich kann man jederzeit ausgehend von einer Instanz prototypische Erweiterungen vornehmen, aber der Sinn von OOP ist gerade diese Trennung auf Codebasis.
Das kommt darauf an - in Java z.b. schreibst Du alle Methoden direkt in die Klasse. Es sei denn, du nimmst Interfaces ein.
Auch in PHP stehen alle Methoden in der Klasse selbst.
function K () { ... }
K.prototype = {
methode : function () {
alert("Hallo Welt!");
}
/* und weitere Eigenschaften/Methoden */
};
Möglicherweise verstehe ich die Prototype-Eigenschaft nicht richtig, aber nach meinem bisherigen Verständnis greift das Prototype-Objekt auf erzeugende Klasse zu.
In Deinem Beispiel würde (nach meinem Verständnis) daher die Methode "methode" dem "function" - Objekt zugeweisen.
Denn gewissermaßen ist ja K eine Instanz der Klasse "function".
In Actionscript benutzt man genau diesen Effekt um allen Filmen im Projekt ein bisschen mehr "Können" zu verleihen:
MovieClip.prototype.methode = function () {...}
Ab hier beherrschen alle MovieClips die Methode "methode".
Dein Obiges Beispiel funktioniert natürlich trotzdem, denn
K ist als Instanz von function natürlich in der Lage, sämtliche Methoden von "function" (und somit auch "methode") auszuführen.
Nur können dann alle anderen von "function" abgeleiteten Objekte ebenfalls "methode" ausführen - was ja unter Umständen nicht im Sinne des Erfinders ist (weil man z.b. abhängig von der Objekt-Klasse jeweils eine unterschiedliche "methode" implementieren will).
Oder bin ich mit meinem Verständnis von "prototype" komplett auf dem Holzweg?
Grüsse,
Jörg