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
    

      

  • 相关阅读:
    VMWare Workstation的激活码 亲测有效
    虚拟机搭建appRtcDemo的appr.tc服务器
    windows webrtc支持H264的源码编译
    windows webrtc 编译
    获取windows系统分屏个数
    windows cmd窗口光标闪动效果消失
    win10 检测系统是不是正版的 以及slmgr.vbm -dlv命令不生效
    symfonos2
    利用ARP欺骗进行MITM(中间人攻击)
    内网学习之MySQL服务提权
  • 原文地址:https://www.cnblogs.com/leaf930814/p/6603915.html
Copyright © 2011-2022 走看看