封裝:使用對象封裝的好處是能夠減小全局變量污染的機會,講屬性,函數都隸屬一個對象。閉包
封裝前:函數
<script> var name="foo"; //name是全局的,被暴露 i=1; //全局的,沒有var關鍵字聲明的變量是全局的,與位置關係不大 function show(){ //show 是全局的,被暴露 console.log("name->"+name); console.log(++i); } //i是全局的 2 show(); //3 show(); </script>
運行結果:this
封裝後:spa
//對外只暴露bar,使用閉包封裝
var bar=function(){
var i=1;
return{
name:"bar",
show:function(){
console.log("name->"+this.name);
console.log(++i);
}
};
};
var bar1=bar();
//2
bar1.show();
//3
bar1.show();
var bar2=bar();
//2,由於被封裝,且閉包,i是局部私有的
bar2.show();
運行結果:code