javascript高级程序设计第三版P164原型链
javascript高级程序设计第三版P164原型链,为什么SubType.Prototype的constructor指向了原型的构造函数(SuperType)而Supe...
javascript高级程序设计第三版P164原型链,为什么SubType.Prototype的constructor指向了原型的构造函数(SuperType)而SuperType.Prototype的constructor却指向了自己的构造函数(也是SuperType),类推SuperType.Prototype的constructor不应该指向Object的么?还是我理解该页最下面的一句话理解错了?
展开
2个回答
展开全部
我来说一下吧,虽然我也不是理解的很深刻。
首先默认情况下一个构造函数:
function SuperType(){
this.property = true;
}
他的原型应该是他的原型对象:SuperType.prototype,在chrome里面用console输出是:
我们可以看到SuperType的原型对象的constructor属性又指向了SuperType函数。
看一下SubType函数,他是构造函数SuperType的一个实例,她是被SuperType构造出来的呀,所以SubType函数原型的constructor就指向了SuperType构造函数。
类推SuperType.Prototype的constructor不应该指向Object的么?
书上写所有函数的默认原型都是Object的实例,所以如果:
console.log(SuperType.prototype.__proto__);的话在控制台会输出:Object {}。
__proto__是构造的实例与原型之间的隐形链接。
书上本来就挺绕的,自己慢慢理解一下吧,时间久了就会理解了,虽然我现在也不是很理解。采纳我吧(*^__^*) 嘻嘻。
展开全部
SuperType.Prototype的constructor被重新定义了,覆盖了从Object继承来的constructor!
追问
那此时的SubType Prototype,SuperType Prototype到底分别指向的是?这俩有什么不一样啊?好像唯一的区别就是,SubType Protype是被重写了的,而SuperType ProTotype是没有被重写啊,SuperType ProTotype里直接有一个内部的Prototype指向了Object Prototype
追答
我看了一下书,例子很明确的表明SubType.prototype等于SuperType的实例,而SuperType原型链是JS默认的原型。SubType包含了SuperType原型链,这样SubType可以获取到SuperType原型上的属性。
你的问题有些笼统,你应该说明哪些地方有疑惑,单就说明例子感觉很无力。因为可以说的很多也可以说的很少。高级程序设计书不错,我也看。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询