zoukankan      html  css  js  c++  java
  • jQuery框架分析第一章: 第一个匿名函数

    我的jQuery版本为1.7*

    这个版本代码比之前的版本优化了很多,结构也清晰了不少,就用最新的吧。

    打开jQuery源代码

    首先你能看到所有代码被一个

    (function(window,undefined){
    
    })(window)

    这是个什么东西..

    首先,这是一个匿名函数(不懂?那就先去谷歌下吧);

    其次,这是一个自调用匿名函数;

    这段代码做了三件事

    第一件:创建一个只给jQuery用的空间,我们估且就叫 “私有空间”,与C++的命名空间很相似,为了保证jQuery不与其他JavaScript框架冲突,如果是一个JavaScript框架,为了通用性,必须要有自己的命名空间!

    第二件:传入一个window变量,本来window是一个全局变量,但是这里把它传给jQuery框架,这个时候window在jQuery框架里就变成局部变量了,为什么?一切为了速度。当window变成局域变量之后,在JQ框架里面调用window变量,它的作用连就不用再回到顶层作用于。

    注意:传到jQuery的window对象并不是一个拷贝,而是可以认为是一个指针,他们指向同一段内存地址。

    如下面的代码:

    window.a='this is in window';
    (function(window,undefined){
        window.a='this is in jq';
        setTimeout(function(){
            alert(window.c);    //输出 this is c
        },1000)
    })(window)
    window.c='this is c';
    console.log(window.a)   //输出 this is in jq;

    第三件:传入undefined变量,为啥?

    我也不太确定,查了下资料,说是为了保证jQuery空间内undefined为真的未定义。因为undefined可以被赋值变成一个局部变量。

    如:

    undefined="this is siren";
    alert(undefine);

    这段代码 除了在FireFox里不能变,其他浏览器unefined都变成已定义了。

    下一章,我们就要从jQuery源码里,由上往下一点点分析了。

  • 相关阅读:
    npm start报错
    npm install 错误
    vue父子组件间传值
    vue-devtools安装过程的坑
    用js进行排序
    筛选表格数据
    基于ElementUI封装可复用的表格组件
    小程序头部滑动切换
    DisneyDiffuse解析
    基于URP的ScreenSpaceDecal的实现(其实和URP没啥关系)
  • 原文地址:https://www.cnblogs.com/52php/p/5657871.html
Copyright © 2011-2022 走看看