У меня возникли проблемы с пониманием предложения IF в конце этой функции из шаблонов проектирования JavaScript:
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;
}
}
В книге объясняется, что эти строки гарантируют, что атрибут конструктора суперкласса правильно установлен, даже если суперкласс является самим классом Object. Тем не менее, если я опустил эти три строки и сделаю следующее:
function SubClass() {};
extend(SubClass, Object);
alert(Object.prototype.constructor == Object);
Предупреждение говорит "true", что означает, что конструктор суперкласса задан правильно даже без трех последних строк. При каких условиях этот оператор IF делает что-то полезное?
Спасибо.