JavaScript héritage étendre la fonction

J'ai un peu de mal à comprendre la clause if à la fin de cette fonction à partir de Pro JavaScript Modèles de Conception:

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;
    }
}

Le livre explique que ces lignes s'assurer que le constructeur de la super-classe attribut est défini correctement, même si la super-classe est la classe de l'Objet lui-même. Pourtant, si j'omettre ceux de trois lignes et d'effectuer les opérations suivantes:

function SubClass() {};
extend(SubClass, Object);

alert(Object.prototype.constructor == Object);

L'alerte dit "vrai", ce qui signifie que le constructeur de la super-classe est définie correctement même sans ces trois dernières lignes. Sous quelles conditions, alors, SI l'énoncé de faire quelque chose d'utile?

Grâce.

J'ai une question: pourquoi l'intermédiaire de la fonction F, au lieu de simplement la sous-classe.prototype = new super-classe();?

OriginalL'auteur Zach | 2010-04-21