Ich habe mir Douglas Crockfords Gespräche im YUI Theater angeschaut und ich habe eine Frage zur JavaScript-Vererbung ...
Douglas gibt dieses Beispiel, um zu zeigen, dass "Hoozit" von "Gizmo" erbt:
%Vor% Warum schreibt er Hoozit.prototype = new Gizmo()
anstelle von Hoozit.prototype = Gizmo.prototype
?
Gibt es einen Unterschied zwischen diesen beiden?
Der Grund dafür ist, dass die Verwendung von Hoozit.prototype = Gizmo.prototype
bedeuten würde, dass das Modifizieren von Hoozits Prototypobjekt auch Objekte vom Typ Gizmo verändern würde, was kein erwartetes Verhalten ist.
Hoozit.prototype = new Gizmo()
erbt von Gizmo und lässt dann Gizmo in Ruhe.
Die anderen Antworten adressieren das, aber wenn du den Prototyp vererben willst, kannst du parasitäre Magie benutzen:
%Vor%Jetzt können Sie ersetzen:
%Vor%mit
%Vor%Es ist vielleicht nicht die Mühe wert, es sei denn, Sie haben einen wirklich großen Gizmo-Konstruktor (der einzige Gewinn in meinem Vorschlag ist, dass Sie Gizmos Konstruktor nicht anrufen müssen, um den Prototyp anzuschließen). Ich habe Beispiele für viele dieser Arten von Mustern in TDD-JavaScript-Beispielen .
Tags und Links javascript inheritance prototypal-inheritance