ich mehrere Artikel über js Erbe schon gelesen (this one, this one, this one, etc.)Was ist der korrekte Prototyp Affektation in Javascript Vererbung?
In this article von Mozilla, "klassischen" Vererbung ist als dies gezeigt: (I Beispiele vergleichmäßigt)
// inherit Base
function Derived() { ... }
Derived.prototype = new Base(); <-------
Derived.prototype.constructor = Derived; <-------
Doch in this article ich sehe:
// inherit Base
function Derived() { ... }
Derived.prototype = Object.create(Base.prototype); <-------
Derived.prototype.constructor = Derived;
Darüber hinaus habe ich auch gesehen:
Derived.prototype = Base.prototype;
Und ich experimentierte auch und nicht die Verwendung von constructor
Affektiertheit finden konnte:
Derived.prototype.constructor = Derived; <--- it still work if I skip this line
wenn ich diese Zeile überspringen, new Derived()
richtig ruft Derived()
sowieso.
So 1) Was ist richtig:
Derived.prototype = new Base();
Derived.prototype = Object.create(Base.prototype);
Derived.prototype = Base.prototype;
- andere?
Und 2) wird Derived.prototype.constructor = Derived;
wirklich benötigt? Warum ?
das ist die Sache über Javascript, können Sie tun, was Sie mögen .. Ich mag John Resig class.js Weg der Verpackung der Prototyp-Quatsch für Sie, so dass Sie es nie in Ihrem Code sehen müssen .http: //ejohn.org/blog/simple-javascript-inheritance/ – andygoestohollywood
'Object.create()' ist ein relativ neuer Befehl, der vorher nicht existierte. Siehe https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create (die Browser-Kompatibilitätsübersicht befindet sich am Ende dieser Seite). Wenn Sie nur Browser verwenden, die es haben, verwenden Sie es, sonst nicht - wie ist das für einen lächerlich offensichtlichen Ratschlag? :) –