JS中,范例仅指向最初原型对象吗?(JS高级程序设计疑问)
JS中,实例仅指向最初原型对象吗?(JS高级程序设计疑问)


第一张图片中,划红线的地方仅指最初原型吗?
第二张图片中,1代表最初原型对象,2代表现有原型对象,是吗?
参见《JS高级程序设计》156、157页。
------解决思路----------------------
是的。
第一张图中划红线的地方,指构造函数所拥有的任何“现在的原型”。由于你是在 friend 调用了构造函数之后才修改了构造函数的原型,因此 friend 的属性指针全都指向旧的 cached 的原型对象,而不是新创建的原型对象。
------解决思路----------------------
你理解的没错,写个例子就容易明白了
下面 a b c 都是 Class 的实例,但它们的原型各不相同
第一张图片中,划红线的地方仅指最初原型吗?
第二张图片中,1代表最初原型对象,2代表现有原型对象,是吗?
参见《JS高级程序设计》156、157页。
------解决思路----------------------
是的。
第一张图中划红线的地方,指构造函数所拥有的任何“现在的原型”。由于你是在 friend 调用了构造函数之后才修改了构造函数的原型,因此 friend 的属性指针全都指向旧的 cached 的原型对象,而不是新创建的原型对象。
------解决思路----------------------
你理解的没错,写个例子就容易明白了
下面 a b c 都是 Class 的实例,但它们的原型各不相同
function Class() {
}
Class.prototype = { name: "aaa" };//更换整个原型
var a = new Class();
Class.prototype = { name: "bbb" };//更换整个原型
var b = new Class();
Class.prototype = { name: "ccc" };//更换整个原型
var c = new Class();
alert(a.name);//输出aaa
alert(b.name);//输出bbb
alert(c.name);//输出ccc