06-jQuery原理
2019-10-07 本文已影响0人
七分之二十四
jQuery基本结构
- jQuery的本质是一个闭包
- jQuery为什么使用闭包来实现:为了避免多个框架的冲突
- jQuery如何让外界访问内部定义的局部变量:window.xxx = xxx;
- jQuery为什么要给自己传递一个window参数:为了方便后期压缩代码和提升查找的效率
- jQuery为什么要给自己接收一个undefined参数:为了方便后期压缩代码,IE9以下的浏览器undefined可以被修改,为了保证内部使用的undefined不被修改,所以需要接收一个正确的undefined
jQuery入口函数
- 传入 '' null undefined NaN 0 false,返回空的jQuery对象
- 字符串:
- 代码片段:会将创建好的DOM元素存储到jQuery对象中返回
- 选择器:会将找到的元素存储到jQuery对象中返回
- 数组:会将数组中存储的元素依次存储到jQuery对象中返回
- 除上述类型以外的:会将传入的数据存储到jQuery对象中返回
真伪数组转换
- apply和call方法的作用
- 专门用于修改方法内部的this
- call(对象,参数1,参数2,...);
- apply(对象,[数组]);
- 真数组转伪数组:[].push.apply(obj,arr);
- 伪数组转真数组:[].slice.call(obj);
函数处理
-
onload事件会等到DOM元素加载完毕,还会等到资源也加载完毕才会执行
-
DOMContentLoaded事件只会等到DOM元素加载完毕就会执行回调(不支持IE8及以下)
//判断DOM是否加载完毕 if (document.readyState == "complete") { fn(); }else if (document.addEventListener) { document.addEventListener("DOMContentLoaded",function () { fn(); }) }else { document.attachEvent("onreadystatechangge",function () { if(document.readyState == "complete") { fn(); } }) }