近期看代码,发现不知觉的情况下,自己写过很多闭包。下面代码是闭包创建私有变量,只能通过给定入口修改其中变量的例子
var counter = (function(){
var i = 0;
return {
get: function(){
return i;
},
set: function(val){
i = val;
},
increment: function(){
return ++i;
}
}
}());
上述中 i私有变量 只可通过提供的couter.set()去修改 隔离作用域 但是优点也是缺点是 变量会一直在内存中
var counter = {
i: 0,
get: function(){
return this.i;
},
set: function(val){
this.i = val;
},
increment: function(){
return ++this.i;
}
}
对象字面量的写法 可通过counter.i 去修改i的值,这里es6的写法:
var counter = {
i: 0,
get(){
return this.i;
},
set(val){
this.i = val;
},
increment(){
return ++this.i;
}
}
counter.i =3;
counter.get()//3