首页 > js里,实例的constructor.ptototype一定指向实例的构造函数么?

js里,实例的constructor.ptototype一定指向实例的构造函数么?

function Person(){}
function Son(){}
Son.prototype = new Person();
var son = new Son();
son.constructor.prototype  //指向Person()构造函数

这个地方还是指向Person,我的理解因为Person的实例里面没有constructor属性指向Son构造函数,所以这个地方继续向原型找constructor,找到Person.prototype的constructor属性,指向Person构造函数。

但是son实例的构造函数是Son(){},照理说son.constructor.prototype应该是指向Son(){}构造函数的。

所以这个地方需要写明son是Son(){}的实例么?
还是说实例的constructor.ptototype并不一定需要指向实例自己的构造函数呢?
还是我的理解哪里有问题?

谢谢。


来看看开开心心做几道JavaScript机试题 - 01

继承的关键,在于一定要把Son的构造器再手动置回去:

Son.prototype = new Person();
Son.prototype.constructor = Son;

prototype是prototype,constructor是constructor,不要混淆了。

首先,son.constructor指向了Son,Son.prototype又指向了Person实例。


你去多看看原型链是怎么回事就知道了。
prototype 中有一个 constructor 属性,你直接把原型替换成了 new Person(),也就重写了 constructor,自然会发生你所说的情况。

【热门文章】
【热门文章】