【发布时间】:2013-05-23 04:47:47
【问题描述】:
我已经阅读了很多关于原型继承如何工作以及解释器如何遍历原型链来查找属性的文章。
function Man()
{
this.hands=2;//1
}
function father()
{
this.name="";
}
father.prototype= new Man();//2
var malay= new father();
var abhik= new father();
现在我的问题是语句 #1 & #2 只被调用一次。那么“abhik”和“malay”应该共享同一个 Man 对象吗? 所以内存中会有 3 个对象。 1.abhik 2.马来语 3.man(双方共享一个实例) 那么按照这种逻辑,更改后的值应该在对象之间共享?
malay.hands=3;
console.log(abhik.hands);
abhik.hands=4;
console.log(malay.hands);
但事实并非如此。 为什么这样 ?
【问题讨论】:
-
有关如何子类化的更多信息:stackoverflow.com/questions/16063394/… 如果您的实例需要对 Man 进行子类化,而不是在父亲的函数体中调用 Man 在像这样被创建的父亲:Man.call(this);
-
在马来语上设置 hand 属性的那一刻,您正在覆盖该属性,从原型中隐藏。(格式化,移动)
标签: javascript prototypal-inheritance prototype-programming