Mam pewne problemy ze zrozumieniem klauzuli jeśli na koniec tej funkcji z Pro Design Patterns JavaScript przedłużyć:JavaScript dziedziczenie funkcji
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;
}
}
Książka wyjaśnia, że linie te zapewniają, że atrybut konstruktor nadklasy jest prawidłowo set, nawet jeśli superklasą jest sama klasa Object. Jednak, jeśli pominąć te trzy linie i wykonaj następujące czynności:
function SubClass() {};
extend(SubClass, Object);
alert(Object.prototype.constructor == Object);
Alert mówi „prawdziwy”, co oznacza, konstruktor nadklasy jest ustawione prawidłowo, nawet bez tych ostatnich trzech liniach. W jakich warunkach to stwierdzenie JAŚ czyni coś pożytecznego?
Dzięki.
Mam pytanie: dlaczego funkcja pośrednicząca F, zamiast po prostu subClass.prototype = new nadklasy() ;? – 755