javascript - js里,实例的constructor.ptototype一定指向实例的构造函数么?
黄舟
黄舟 2017-04-11 11:55:03
[JavaScript讨论组]
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并不一定需要指向实例自己的构造函数呢?
还是我的理解哪里有问题?

谢谢。

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(3)
巴扎黑

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

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

Son.prototype = new Person();
Son.prototype.constructor = Son;
巴扎黑

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

天蓬老师

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号