Maison  >  Questions et réponses  >  le corps du texte

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

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

ringa_leeringa_lee2749 Il y a quelques jours512

répondre à tous(3)je répondrai

  • PHP中文网

    PHP中文网2017-04-10 14:54:32

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

    jQuery.fn = jQuery.prototype = {}
    

    répondre
    0
  • 大家讲道理

    大家讲道理2017-04-10 14:54:32

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

    répondre
    0
  • 天蓬老师

    天蓬老师2017-04-10 14:54:32

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

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

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

    répondre
    0
  • Annulerrépondre