zoukankan      html  css  js  c++  java
  • 自调用匿名函数和js的Module模式

    编写自调用匿名函数的结构一般如下:

    ;(function( window, undefined ) {
        // your code
    })(window);

    传入的参数window,和参数列表中的undefined怎么解释?

    1、传入的参数window

      把全局的Window对象传进去,把全局的变量变成局部变量,避免了函数里面执行时候,不需要将作用域链退到顶层作用域,到外面去寻找window,可以提高效率。假如函数里面用到很对window的对象,这样函数要不停的去外面寻找。

    还有一点,在压缩代码的时候,window作为参数可以压缩成一些标识符。

    2、参数列表中的undefined

    在匿名函数的作用域内,确保undefined是真的未定义。

    就算外面undefined被定义了,也不会影响函数内部的。这就最大程度防止外界的变量定义对所做封装的内部造成影响。

    3、其他 

    $(function(){

      //your code

    })

    就是页面加载好之后执行的函数,是$(document).ready(function(){})的简写。

    4、Module模式

    特点:

      1、模块化,可重用
      2、封装了变量和function,和全局的命名空间不接触,松耦合
      3、只暴露可用public的方法,其它私有方法全部隐藏

    // 创建一个立即调用的匿名函数表达式
    // return一个对象,对象中你要暴露的东西
    // 返回这个变量将赋值给counter
    
    var counter = (function(){
    	var i = 10;
    
    	return {
    		get:function(){
    			return i;
    		},
    		set:function(val){
    			i = val;
    		},
    		increment:function(){
    			return ++i;
    		}
    	}
    
    }())
    
    console.log(counter.get());  //10
    counter.set(100);
    console.log(counter.increment()) //101
    

      

  • 相关阅读:
    取得窗口大小和窗口位置兼容所有浏览器的js代码
    一个简单易用的导出Excel类
    如何快速启动chrome插件
    网页表单设计案例
    Ubuntu下的打包解包
    The source file is different from when the module was built. Would you like the debugger to use it anyway?
    FFisher分布
    kalman filter
    Group delay Matlab simulate
    24位位图格式解析
  • 原文地址:https://www.cnblogs.com/leaf930814/p/6603915.html
Copyright © 2011-2022 走看看