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。

  • 相关阅读:
    careercup-高等难度 18.1
    面试——网络
    堆和栈的区别(转过无数次的文章)
    Linux用户空间与内核空间(理解高端内存)
    Linux内存管理
    位操作实现加减乘除四则运算
    栈的压入和弹出序列
    DG gap sequence修复一例
    ORACLE 11gR2 DG(Physical Standby)日常维护02
    oracle的特殊权限s bit丢失
  • 原文地址:https://www.cnblogs.com/yangkangkang/p/5936476.html
Copyright © 2011-2022 走看看