Sto avendo qualche difficoltà a capire la clausola Se alla fine di questa funzione da Pro Patterns JavaScript design estendere:JavaScript eredità funzione
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;
}
}
Il libro spiega che queste linee in modo che l'attributo costruttore della superclasse è correttamente set, anche se la superclasse è la classe Object stessa. Eppure, se tralascio quelle tre righe e procedere come segue:
function SubClass() {};
extend(SubClass, Object);
alert(Object.prototype.constructor == Object);
L'avviso dice 'vero', il che significa che il costruttore della superclasse è impostato correttamente anche senza queste ultime tre righe. In quali condizioni, quindi, questa istruzione IF fa qualcosa di utile?
Grazie.
Ho una domanda: perché la funzione di intermediario F, invece di subClass.prototype = new superClass() ;? – 755