• 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源码里,由上往下一点点分析了。

  • 相关阅读:
    Eclipse在线安装spring-tool-suit插件
    使用Eclipse构建Maven项目
    uwsgi+flask环境中安装matplotlib
    开启flask调试
    linux进入软连接所指向的原目录
    eclipse打不开,报错 "java was started with exit code=13"
    gnuplot 的安装
    使用tcp_probe时最初没有输出,先卸载后加载模块之后就有了。
    一个简单的socket程序运行与抓包查看
    如何查看文件是dos格式还是unix格式的?
  • 原文地址:https://www.cnblogs.com/52php/p/5657871.html
Copyright © 2020-2023  润新知