ich einige Probleme mit der IF-Klausel am Ende dieser Funktion von Pro JavaScript Design Patterns zu verstehen:JavaScript Vererbung erweitert Funktion
function extend(subClass, superClass) {
var F = function() {};
F.prototype = superClass.prototype;
subClass.prototype = new F();
subClass.prototype.constructor = subClass;
subClass.superclass = superClass.prototype;
if(superClass.prototype.constructor == Object.prototype.constructor) {
superClass.prototype.constructor = superClass;
}
}
Das Buch erklärt, dass diese Linien sorgen dafür, dass die Konstruktor-Attribut der übergeordnete Klasse ist richtig gesetzt, auch wenn die Oberklasse die Objektklasse selbst ist. Doch wenn ich diese drei Zeilen auslassen und wie folgt vorgehen:
function SubClass() {};
extend(SubClass, Object);
alert(Object.prototype.constructor == Object);
Der Alarm sagt, wahr ', was bedeutet, dass der Konstruktor der übergeordneten Klasse richtig eingestellt ist auch ohne diese letzten drei Zeilen. Unter welchen Bedingungen macht diese IF-Anweisung dann etwas Sinnvolles?
Danke.
Ich habe eine Frage: warum die Mittlerfunktion F, statt nur subClass.prototype = new Oberklasse() ;? – 755