In Douglas Crockford JavaScript verwenden: The Good Parts, erklärt er die Idee der pseudo Erbe mit diesem Stück Code, die Cat
von Mammal
vererben zeigt.Verwirrung darüber, wann Prototyp in Crockford Beispiel pseudo Inheritance
Dann führt er eine neue Methode namens "vererbt" ein, um den Code lesbarer zu machen.
Function.method('inherits', function (Parent) {
this.prototype = new Parent();
return this;
});
Er zeigt das Beispiel erneut mit der neuen Methode 'inherit'.
var Cat = function (name) {
this.name = name;
this.saying = 'meow';
}.
inherits(Mammal).
method('purr', function (n) {
var i, s = '';
for (i = 0; i < n; i += 1) {
if (s) {
s += '-';
}
s += 'r';
}
return s;
}).
method('get_name', function() {
return this.says() + ' ' + this.name + ' ' + this.says();
});
Es mir vor wie in diesem neuen Beispiel sieht, purr
und get_name
werden direkt auf das Cat
Objekt definiert, während im ersten Beispiel, das sie auf Cat.prototype
definiert wurden. Ist das richtig? Wenn ja, warum hat er seine neuen Methoden nicht auf definiert? Macht es einen Unterschied?
Uh, bist du sicher, dass er 'Cat.prototype = new Mammal();' (ohne zu erklären, wie es falsch ist)? Ich dachte, er hätte es besser gewusst. – Bergi
Im vorherigen Kapitel (Ch 4) bezeichnet er die klassisch inspirierte Syntax als "die schlechteste der beiden Welten" und sagt, dass "die Verwendung dieses Stils [das neue Schlüsselwort] der Konstruktorfunktionen nicht zu empfehlen ist. Wir werden bessere Alternativen sehen im nächsten Kapitel. " –
OK, gut dann :-) – Bergi