在看《JavaScript高级程序设计(第3版)》原型链这块,有一些疑问。
当没有继承时:
function SuperType() {
this.property = true;
}
SuperType.prototype.getSuperValue = function () {
return this.property;
};
原型的图示如下:
当有继承时:
function SuperType() {
this.property = true;
}
SuperType.prototype.getSuperValue = function () {
return this.property;
};
////////////////////////////
// 加了如下代码
///////////////////////////
function SubType() {
this.subproperty = false;
}
SubType.prototype = new SuperType(); // **主要是这句**
SubType.prototype.getSubValue = function () {
return this.subproperty;
};
变成了这样。
但是SubType.prototype = new SuperType()
这行代码,只是改了SubType中prototype的指向,不应该是向下图这样吗?4号线是怎么出来的?它不应该是将3号线改成7号线吗?像下图这样吗?
你理解的没有什么错,但是忽略了我用红圈圈起来的两个框是有关联的,他们两个在
这句代码的影响下其实是同一个对象.你把这两个框合并起来图就和上面的一样了.