我是JavaScript的初学者,目前正在阅读Thomas A. Powell和Fritz Schneider撰写的The Complete Reference 3rd Edition。
我引用同一本书中关于黑白差异的摘录
构造函数Property和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
对我来说,结果为false,这使我不得不猜测instanceof运算符将如何递归检查整个内部原型链。
最佳答案
使用Object.create()实现经典继承。
function Robot(){
}
function UltraRobot(){
Robot.call(this);
}
UltraRobot.prototype = Object.create(Robot.prototype);
var robot = new Robot();
var guard = new UltraRobot();
alert(guard instanceof Robot); // true, through Inheritance
关于javascript - 通过构造函数Property和instanceof运算符设置继承,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27909353/