近期看代码,发现不知觉的情况下,自己写过很多闭包。下面代码是闭包创建私有变量,只能通过给定入口修改其中变量的例子

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
posted on 2017-03-01 20:41  sxy宇  阅读(154)  评论(0编辑  收藏  举报