zoukankan      html  css  js  c++  java
  • jQuery的立即调用表达式

    立即调用表达式

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

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

    写法一:

    (function(window,factory){
          factory(window); 
    }(this,function(){
        return function(){
             //jQuery的调用  
        }
    }));
    

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

    写法二:

    var factory = function(){
          return function(){
                //执行方法
            }  
    }
    var jQuery = factory();
    

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

    写法三:

    (function(window,undefined){
            var jQuery = function(){};
            //....
            window.jQuery = window.$ = jQuery;
    })(window);
    

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

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

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

  • 相关阅读:
    flex,flashDevelop和gumbo编译器比较
    用侦听器的useCapture属性决定事件哪个阶段做处理
    关于显示对象的parent,stage属性的说明
    ASP.NET MVC 1.0 Result 几何?
    MVC Controller与ActionResult的返回值
    C# 可空类型和空接合运算符(??)
    C# 2.0新特性与C# 3.5新特性
    创建返回Excel的自定义ActionResult
    jQuery getJSON()函数及getScript()函数
    如何使用ASP.NET MVC的Filter
  • 原文地址:https://www.cnblogs.com/yangkangkang/p/5936476.html
Copyright © 2011-2022 走看看