Thread Ein paar Programmiertricks (39 answers)
Opened by roooot at 2008-03-22 23:16

murphy
 2008-03-25 23:30
#107486 #107486
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
KurtZ+2008-03-25 21:10:26--
[...] das folgende erzeugt aber ne Fehlermeldung
Code: (dl )
  Unterinstanz=new Instanz(); // Fehler: Instanz is not a constructor 

[...]
Die oft zitierte Vererbung durch Cloning habe ich übrigens nicht so deutlich gesehen.


Das was new automatisch tut, nämlich den Prototypen zu klonen und dann eine Initialisierungsfunktion auszuführen, kann man auch von Hand machen:
Code: (dl )
1
2
3
4
5
6
var o0 = { a: 1, b: 2 };

var o1 = { };
o1.__proto__ = o0;

alert(o1.b);


Schon haben wir einen Klon von o0 erzeugt, ohne dass irgendwelche Klassen im Spiel wären ;-)

Quote
Und nur weil ich z.B. in JS einzelnen Instanzen eigene Methoden geben kann, fallen mir dazu spontan keine Anwendungsfälle/Muster ein! Bräuchte ich sowas in Perl hätten halt die Instanzen ein Hash wo ich Coderefs namentlich ablege, und mittels AUTOLOAD würden diese aufgerufen. Es geht also in beiden Sprachen/Modellen, man braucht sowas aber wirklich selten.


Es geht in den meisten Sprachen, wenngleich sich die Aufrufsyntax dann von der normaler Methoden unterscheidet, aber bei JavaScript ist es die einzige Methode um neue Methoden zu erzeugen.

An einem einzelnen Objekt, das nicht als Prototyp gedacht ist, neue Methoden zu verankern macht aber nur gelegentlich wirklich Sinn. Es kann zum Beispiel nützlich sein, wenn eine Funktion, die man über eine JavaScript<->XPCOM oder JavaScript<->Java Brücke aufruft, als Argument die Instanz eines bestimmten Interfaces erwartet.

Quote
Wenn dir jetzt ein Anwendungsfall einfällt Objekte in JS deutlich anders und effizienter zu modellieren, dann wär ich dir für den Hinweis dankbar.


Nö, da fällt mir nichts ein. Effizient ist JavaScript sowieso meistens nicht und das wird es auch nicht dadurch, dass man kompliziertere Konstruktionen baut ;-)
When C++ is your hammer, every problem looks like your thumb.

View full thread Ein paar Programmiertricks