javascript - 在jquery源码中,为什么要将jquery.prototype.constructor赋值为jquery本身?
ringa_lee
ringa_lee 2017-04-10 14:52:32
[JavaScript讨论组]

就算不赋值的话,jquery.prototype.constructor不是也等于jquery么?

ringa_lee
ringa_lee

ringa_lee

全部回复(3)
PHP中文网

你说的对,但是你注意看源码,prototype是个对象字面量{}。对象字面量的constructor就不是jquery了,所以需要重新指明。

jQuery.fn = jQuery.prototype = {}
大家讲道理

在读<<JavaScript设计模式>>继承部分章节时看到的译者注:
/*
* 译者注:定义一个构造函数时,其默认的prototype对象是一个Object 类型的实例,
* 其constructor属性会被自动设置为该构造函数本身。
* 如果手工将其prototype 设置为另外一个对象,
* 那么新对象自然不会具有原对象的constructor值,
* 所以需要重新设置其constructor 值。
*/

天蓬老师

jQuery.fn.init.prototype = jQuery.fn;
通过原型传递解决问题,把jQuery的原型传递给jQuery.prototype.init.prototype

换句话说jQuery的原型对象覆盖了init构造器的原型对象

因为是引用传递所以不需要担心这个循环引用的性能问题

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

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