Я новичок в JavaScript и в настоящее время проходит в Полное руководство третье издание Томасом А. Пауэлл, Фриц Шнайдер.Настройка наследования через конструктор собственности и InstanceOf оператора
Привожу отрывок из той же книги о разности б/ш конструктору собственности и InstanceOf оператора. Однако разница тонкая. InstanceOf оператор рекурсивно проверитьвесь внутренний прототип цепи (что означает все типы предков), тогда как конструктор проверки, как показано только проверить немедленным свойство объекта экземпляра. Это наследственный проверка часто очень полезны в унаследованных моделей программирования со многими слоями наследования:
function Robot(){
}
function UltraRobot(){
}
var robot = new Robot();
var guard = new UltraRobot();
alert(robot.constructor == Robot); // true
alert(guard.constructor == UltraRobot); // true
guard.constructor = Robot; // Set up inheritance
alert(robot instanceof Robot); // true
alert(guard instanceof UltraRobot); // true
alert('Here');
alert(guard instanceof Robot); // true, through Inheritance
alert(guard instanceof Object); // true, all objects descend from Object
Однако ниже линии в книге автора,
alert(guard instanceof Robot); // true, through Inheritance
для меня, результаты ложно, который оставляет меня гадать, как оператор InstanceOf будет рекурсивно проверитьвесь внутренний прототип цепи.
Я думаю, вам не хватает строки, что-то вроде UltraRobot.prototype = new Robot(); – dandavis
@ dandavis: Нет, я проверил его. –
'alert (guard instanceof Robot);' тогда должно быть false. – vjdhama