为了账号安全,请及时绑定邮箱和手机立即绑定

源码,为什么要将jquery.prototype.constructor赋值为jquery本身?

源码,为什么要将jquery.prototype.constructor赋值为jquery本身?

莫回无 2018-07-21 12:07:44
就算不赋值的话,jquery.prototype.constructor不是也等于jquery么?
查看完整描述

3 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

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

查看完整回答
反对 回复 2018-07-23
?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

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

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

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


查看完整回答
反对 回复 2018-07-23
?
九州编程

TA贡献1785条经验 获得超4个赞

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

jQuery.fn = jQuery.prototype = {}


查看完整回答
反对 回复 2018-07-23
  • 3 回答
  • 0 关注
  • 843 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信