为什么子类的原型要指向父类的实例而不是父类的原型

 我来答
你微新j
2017-04-11 · 超过16用户采纳过TA的回答
知道答主
回答量:70
采纳率:0%
帮助的人:9.7万
展开全部
以你的例子为例,类student是person的子类,所以从数据结构关系上讲,student不但拥有person即父类的一切特性还有着自身特有的属性。而在存储区域上student的分布则是区域的开始部分是父person类的所有数据,然后是student类自身的特有属性。所以他们的关系就是子类的数据是在父类的数据后面加上了一些自己的特性。既然如此那么当我们使用子类实例化一个对象子后,那么这个对象同样也拥有了父类的所有特性,所以这时如果我们将这个子类的对象进行类型转化为父类的对象是完全可以的,为什么呢?因为子类的对象拥有父类的一切特性。而Person p = new Student()这个语句其实就相当于隐式声明了一个子类对象然后将其隐式转化为父类的类型。所以这里的p应该是父类person的对象。这样做的好处是比如你声明了一个接口或者抽象类,然后要使用他的实例化对象,但是抽象类是不能直接实例化的,所以就需要靠子类来帮忙了。
匿名用户
2017-04-11
展开全部
function P(){}
function C(){}

var p = new P();
C.prototype = p;
这样写的好处是子类如果更改了prototype,那么更改的东西也是附加到p这个实例上的

如果你直接写C.prototype = P.prototype,那你对C的prototype的任何修改都会同时修改P的prototype
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式