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并不一定需要指向实例自己的构造函数呢?
还是我的理解哪里有问题?
谢谢。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
来看看开开心心做几道JavaScript机试题 - 01
继承的关键,在于一定要把
Son的构造器再手动置回去:你去多看看原型链是怎么回事就知道了。
prototype中有一个constructor属性,你直接把原型替换成了new Person(),也就重写了constructor,自然会发生你所说的情况。prototype是prototype,constructor是constructor,不要混淆了。
首先,son.constructor指向了Son,Son.prototype又指向了Person实例。