为什么子类的原型要指向父类的实例而不是父类的原型
2个回答
展开全部
以你的例子为例,类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
function C(){}
var p = new P();
C.prototype = p;
这样写的好处是子类如果更改了prototype,那么更改的东西也是附加到p这个实例上的
如果你直接写C.prototype = P.prototype,那你对C的prototype的任何修改都会同时修改P的prototype
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询