JQ框架结构理解

本文详细探讨了JQuery框架的内部结构,包括选择器引擎、DOM操作、事件处理、AJAX请求等核心模块,旨在帮助读者深入理解其工作原理,并提供如何抽取出JQuery的核心功能进行独立使用的技巧。
1、jQuery对象的本质:

1、1 jQuery对外暴露了两个变量: $和jQuery  ,这两个变量都是指向同一个函数

1、2  举例:

1.2.1  不传参可以创建jq对象
console.log($())   console.log(jquery())  ===> jquery.fn.init 

1.2.2 传参(可以传任何参数,jq会做不同的处理,但是都会得到jq对象) 得到的也是jq对象
console.log($('body'));   ===> jquery.fn.init ==>0:body length:1

1.2.3  发现jq实例对象会以下标的形式存储数据(大部分情况下都是DOM元素),并且还有一个length属性,说明jq实例对象是一个 伪数组 jq实例能够像数组一样访问里面存储的数据和数据量

console.log($('body')[0]);   console.log($('body').length);

2、关于JQ实创建伪数组的原理

2、1  实例化

<script> 
    
    这是工厂函数
    function $(){
        return new init();
    }

    这是构造函数
    function init(){
    }
        
    console.log($());  看上去是jq对象,但是打印出来 init__proto__: Objectconstructor: ƒ init()__proto__: Object ,说明并不是一个伪数组
    console.log($().length);    undefined

</script>    


2、2 让实例化对象变成伪数组的方式

<script> 
    
    这是工厂函数
    function $(){
        return new init();
    }

    这是构造函数
    function init(){
        this.length=0;    给一个length=0;给新创建的实例对象添加属性
    }
        
    console.log($());    init {length: 0}  得到的仍然是实例对象,不过这个实例对象拥有一个length属性,并且值为0,那么这个实例对象又多了一个称呼,叫伪数组对象
    console.log($().length);    0

</script>    

2、3 由上面的示例理解一下什么是伪数组?
   
1、伪数组是一个非数组类型的对象
2、有一个length的属性,值为number类型
3、以下标的方式存储数据

2、4 关于数组push方法

function $(){
        return new init();
    }

    这是构造函数
    function init(){
     <
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值