//自运行模式示例:当用户先后按住键盘的ctrl+enter的时候,弹出消息。其中preCode,clickCount是闭包的全局变量 (function(mess){ var clickCount=0;//记录时间触发次数的变量 var preCode="";//记录前一个键盘的Code的便来那个,用于判断是不是ctrl键 document.body.onkeydown = function(){ if(preCode=="17" && event.keyCode=="13"){ clickCount++;//自增 alert(mess+",次数:"+clickCount);//第一次提示消息:"触发事件,次数:1",第二次提示消息:"触发事件,次数:2" }else{ preCode=event.keyCode;//记录前一个键盘的Code } }})("触发事件");
//函数对象模式示例 function Fun(j){ var i=1; function innerFun(){ alert("j+i="+(j+i)); i+=j;//注意:innerFun对innerParams的变动,会影响每一个Fun的实例化的对象 } return innerFun; } var fun =new Fun(10); fun();//11 fun();//21
//方法返回的是一个带参数的函数
function add(toadd){ //再次强调:内部函数可以带参数,且可以如下简化写法 return function(baseNumber){ return toadd+baseNumber; } }
//调用
var addFun = add(2);//addFun是一个方法 function(num){return 2+num}; var res = addFun(9);//11 var res2 = add(2)(4);//6 var res23 = add(23)(1)//24 alert(res);