Estoy teniendo algunos problemas para entender la cláusula si al final de esta función de Pro Patrones JavaScript Diseño extender:JavaScript herencia función
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;
}
}
El libro explica que estas líneas aseguran que el atributo constructor de la superclase es correcta establecer, incluso si la superclase es la clase de objeto en sí. Sin embargo, si omito esas tres líneas y hacer lo siguiente:
function SubClass() {};
extend(SubClass, Object);
alert(Object.prototype.constructor == Object);
La alerta dice 'verdadero', lo que significa constructor de la superclase se establece correctamente incluso sin esas tres últimas líneas. ¿Bajo qué condiciones, entonces, hace esta declaración IF hacer algo útil?
Gracias.
Tengo una pregunta: ¿por qué la función de intermediario M, en lugar de sólo subClass.prototype = new superClass() ;? – 755