(1) 普通闭包
var name = "john" ;
return {
getName: function(){
return name ;
},
setName : function(n){
name = n ;
}
};
})()
person.getName();
person.setName("tom");
person.getName();
(2)模块化闭包
function Person(){ var name = "john" ;
//如果用this.name,则可直接操作name,不用则可提高封装性,并可在get和set里面做业务逻辑;
this.getName = function(){
return name ;
}
name = n ;
}
}
var person = new Person() ;person.getName();
person.setName("tom");
person.getName();
总结:
概念: 闭包就是外部能够操作局部变量的一种写法 优点: 可减少全局变量,避免重命名
缺点: 不符合GC回收机制,过多会造成内存泄露