Heute habe ich ein JavaScript-Muster gesehen, das ich noch nie in meinem ganzen Leben gesehen habe. Ich kann den Zweck der Verwendung dieses Musters nicht sagen. Es scheint mir falsch, aber ich möchte ein bisschen konservativ sein. Es könnte ein fantastisches Muster sein, das ich noch nie zuvor gesehen habe.
%Vor%Erstens bin ich kein Fan davon, Methoden (als privilegierte Member) ohne Grund im Konstruktor zu erstellen. Dies würde jedes Mal zum Erstellen von Funktionen führen, wenn eine Instanz erstellt wird. Zweitens ruft es in diesem Code-Snippet auch den Prototypnamen "Dog" anstelle von "this" auf. Das macht mich sehr verwirrt.
Weiß jemand, was gut daran ist?
Danke! Gnade
Das ist eine sehr schlechte Idee, aus einer großen Anzahl von Gründen. Einige davon sind:
Dog.prototype.bark()
bedeutet, dass this
Dog.prototype
ist und nicht Ihre Instanz von Dog
, was ernsthafte Probleme verursachen kann. this.bark = function () { Dog.prototype.bark(); }
ist eine ernste WTF. Weil this.bark
bereits die Prototyp-Methode auswertet, ist dies unnötig. Und wenn man es so nennt, wird der natürliche this
Wert zerstört, wie in # 2 erwähnt. Hier ist, was sein sollte:
%Vor%Oder alternativ, ohne den Prototyp überhaupt:
%Vor%Ich würde diesem Schnipsel von Ihnen überhaupt nicht vertrauen.
Entschuldigung für die SEHR späte Antwort, aber wenn Sie wirklich die Prototypen innerhalb des Konstruktors hinzufügen und sie nicht jedes Mal neu erstellen lassen möchten, wenn eine neue Instanz erstellt wird, können Sie dies tun:
%Vor%Ich würde wahrscheinlich immer noch nicht diese Methode verwenden, aber ich habe einige über Instanzen, wo diese Methode eine Option war, wenn es um Frameworks von Drittanbietern ging (die zwielichtige Art).
Tags und Links javascript prototype-programming