jQuery的立即调用表达式

立即调用表达式

  任何库与框架设计的第一要要点就是解决命名空间与变量污染的问题。jquery就是用javascript函数作用域的特性,采用立即调用表达式包裹了自身的方法来解决这个问题的。

  jQuery的立即调用表达式的写法有三种:

写法一:

1
2
3
4
5
6
7
(function(window,factory){
      factory(window);
}(this,function(){
    return function(){
         //jQuery的调用 
    }
}));

 

  可以看出上面代码中嵌套了2个函数,而且把一个函数作为参数传递到另一个函数中并且执行,这种方法有点复杂,我们简化一下写法:

写法二:

1
2
3
4
5
6
var factory = function(){
      return function(){
            //执行方法
        
}
var jQuery = factory();

  上面的代码和方法1是等同的,但是factoty有点变成了简单的工厂模式,需要自己调用,不像是一个单例的jQuery类,所以我们需要改成“自执行”,而不是另外调用。

写法三:

1
2
3
4
5
(function(window,undefined){
        var jQuery = function(){};
        //....
        window.jQuery = window.$ = jQuery;
})(window);

   从上面代码可以看出,自动初始化这个函数,让其只构建一次。详细说一下这种写法的优势:

    1. window和undefied都是为了减少变量查找所经过的作用于(scope),当window传递给闭包内部之后,在必报内部使用它的时候,就可以把它当做一个局部变量,显然比原先在window作用于子啊查找的时候要快一些。

    2. undefined也是同样的道理,其实这个undefined并不是JavaScript数据类型的undefined,而是一个普普通通的变量名。只因为没给它传递值,它的值就是undefined。

 

posted @   yangkangkang  阅读(666)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示