闭包就是函数中包含函数,被包含的函数能够访问包含函数的作用域。
function Cover(){
var cover_a="111";
var bibao_fun=function(){
alert(cover_a);
}
}
闭包常用语创建私有作用域
function Cover(){
//私有变量
var cover_a=1;
var bibao_fun=function(){
alert(cover_a);
}
//公有函数访问私有变量
this.publicfun=function(){
cover_a++;
bibao_fun();
alert(cover_a);
}
}
var test1=new Cover();
console.log(test1.cover_a)//error
test1.publicfun();//right,2
var test2=new Cover();
test2.publicfun();//right,2
//私有变量非静态
创建静态私有变量
创建块级作用域
(function(){
var private1=1;
function privatefun(){
return private1;
}
Private=function(){ //创建了全局变量 ,私有变量在调用后会立即销毁,除非其赋予全局变量或在函数中使用
};
Private.prototype.publicfun=function(){
private1++; //被使用
return privatefun();
}
})()
var p1=new Private();
var result1=p1.publicfun();
var p2=new Private();
var result2=p2.publicfun();
console.log(result1);//2
console.log(result2);//3
单实例对象模块模式
var singleobj=function(){
var private1=1;
function privatefun(){
return private1;
}
var newobj=new Object();
newobj.newpro=11;
newobj.newfun=function(){
private1++;
return privatefun();
}
return newobj;
}();
console.log(singleobj.newfun());//2