jquery源码的总体架构

来源:互联网 发布:淘宝小号怎么注册 编辑:程序博客网 时间:2024/05/24 05:45

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">jquery的所有代码都放在一个自执行的匿名函数中</span>

<span style="font-size: 14px;"> (function(window,undefined){  }(window));</span>

为什么要放在自执行的匿名函数中?

        1.创建一个特殊的函数作用域,这个作用域中的代码不会跟其他同名的函数,变量等代码冲突

        2.加载完JQ文件后,函数会自动执行,初始化所有功能。


为什么要传进参数window而不直接在匿名函数内部使用window?

        原因:

1.window处于作用域链的顶端,直接使用window查找速度比较慢。若传入window,则window作为函数参数就是一个局部变量,按照JS作用域链的原理,会先查找局部变量,不用上溯查找window,这样可以更快地访问window对象

2.便于压缩咯,假设函数的形参为一个字母a或b,window作为实参传进函数,以后再函数内部就可以用形参a表示啦,用一个字母代表window,当然字节小了,文件大小就小了


undefined设置为参数的原因:

其实也是与作用链有关,因为undefined是window对象的一个属性,在某些浏览器下undefined是可以被重写为另外一个值的,如果把undefined作为参数传入,其作为一个局部变量,可以更快地查找到undefined,更重要的是:可以确保参数undefined的值是undefined,而非可能被修改后的值


jquery对外提供的接口有两个$(),jQuery()

很多库中都会使用$,为了防止冲突:

// Map over jQuery in case of overwrite_jQuery = window.jQuery,// Map over the $ in case of overwrite_$ = window.$,
比如jquery的用户自己定义了一个变量

var $=1;

那么在jquery内部就会被存为_$,可以防止冲突

0 0
原创粉丝点击