jQueyr源码分析学习笔记(四)

构造jQuery对象模块的总体源码结构如代码:

(function(window,undefined){

        //构造jQuery对象
        var jQuery =(function(){
            var jQuery = function(selector,context){
                return new jQuery.fn.init(selector,context,rootjQuery);
                    }
                    //局部变量声明
            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;
        })();
        window.jQuery =window.$= jQuery;
    })(window)

通常我们创建一个对象或实例的方式是在运算符new后紧跟一个构造函数,但是,如果构造函数有返回值,运算符new所创建的对象会被丢弃,返回值将作为new表达式的值。jquery利用了这一特性,通过在构造函数jQuery()内部运算符创建并返回另一个构造函数的实例,省去了构造函数jQuery()前面的运算符new,即我们创建jQuery对象时,可以省略运算符new直接写jQuery()。

jQuery.fn是jQuery.prototype简写,可以少写7个字符,方便拼写。

调用构造函数jQuery()返回的jQuery对象实际上是构造函数jQuery.fn.init()的实例,之所以能在构造函数jQuery.fn.init()的实例上调用构造函数jQuery()的原型方法和属性,是因为
在执行 jQuery.fn.init.prototype = jQuery.fn时,用构造函数jQuery()的原型对象覆盖了构造函数jQuery.fn.init()的原型对象,从而使构造函数jQuery.fn.init()的实例也可以访问构造函数jQuery()的原型和方法和属性。

在原型对象jQuery.prototype上定义的属性和方法会被所有的jQuery对象继承,可以有效减少每个jQuery对象所需的内存,事实上,jQuery对象只包含了5种非继承属性,其余都继承自原型对象jQuery.prototype;在构造函数jQuery.fn.init()中设置了整型属性、length、selector、context;在原型方法.pushStack()中设置了prevObject。因此,也不必因为jQuery对象带有太多的属性和方法而担心会占用太多的内存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端岚枫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值