jQuery源码学习一:对jQuery对象的一点思考

    利用暑假时间开始看之前一直想看的jQuery源码,参考资料有高云的《jQuery 技术内幕:深入解析jQuery架构设计与实现原理》,源码版本就是书中的jQuery 1.7.1。

   之前就猜到$()应该是调用一个构造器,返回jQuery对象,但真正看到源码才发现,它返回的并不是jQuery的实例,而是另外一个构造函数init()的实例。这样应该是为了在创建jQuery对象的时候省去写new操作符。

(ps:写给初学者:在用new操作符创建一个构造函数的实例的时候,构造函数里的this指向一个新的空的对象,执行完构造函数的代码后,返回这个this,而作者return另外一个构造函数的实例,打破了这个关系,就不会返回jQuery的实例,而是返回init()的实例,因此创建jQuery对象的时候也就不用加new操作符了)

        var jQuery = (function() {
           var jQuery = function( selector, context ) {
                return new jQuery.fn.init( selector, context, root jQuery );
           },
              // 一堆局部变量声明
           jQuery.fn = jQuery.prototype = {
               constructor: jQuery,
                  init: function( selector, context, rootjQuery ) { ... },
                  // 一堆原型属性和方法
           };
          jQuery.fn.init.prototype = jQuery.fn;
          jQuery.extend = jQuery.fn.extend = function() { ... };
          jQuery.extend({
                 // 一堆静态属性和方法
         });
         return jQuery;

        })();

      并且把实际构造函数init()放在原型上,为了让init()的实例能够使用jQuery对象原型上的方法,又把init()的原型指向jQuery的原型,也就是jQuery.fn.init.prototype = jQuery.fn;

      我感觉如果是我来写jQuery对象,就算是为了省new操作符而另外写一个构造函数,也不会把init()函数放在原型上,而是会在jQuery并列的地方写个新的构造函数,我不知道作者把init()放在原型上是为了把所有方法封装在jQuery上还是什么。

    PS:源码真的写的蛮枯燥的,看不下去的时候,可以写个简单的小的调用例子,打个断点,一行行看。

    PS:说法有误的地方希望得到指正

   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip
综合小区管理系统管理系统按照操作主体分为管理员和用户。管理员的功能包括报修管理、车位管理、车位分配管理、出入管理、字典管理、房屋管理、物业费缴纳管理、公告管理、物业人员投诉管理、我的私信管理、物业人员管理、用户管理、管理员管理。用户的功能包括管理部门以及部门岗位信息,管理招聘信息,培训信息,薪资信息等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 综合小区管理系统管理系统可以提高综合小区管理系统信息管理问题的解决效率,优化综合小区管理系统信息处理流程,保证综合小区管理系统信息数据的安全,它是一个非常可靠,非常安全的应用程序。 管理员权限操作的功能包括管理公告,管理综合小区管理系统信息,包括出入管理,报修管理,报修管理,物业费缴纳等,可以管理操作员。 出入管理界面,管理员在出入管理界面中可以对界面中显示,可以对招聘信息的招聘状态进行查看,可以添加新的招聘信息等。报修管理界面,管理员在报修管理界面中查看奖罚种类信息,奖罚描述信息,新增奖惩信息等。车位管理界面,管理员在车位管理界面中新增。公告管理界面,管理员在公告管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值