闭包的三种经典用法:
1. 通过在函数中创建函数,并返回来延迟作用域链的存在时间(掌握执行环境/作用域链/this/活动对象/arguments/全局对象概念的理解)
2. 模仿块级作用域 (javascript不存在块级作用域)
for(var i=0;i<10;i++){ alert(i);}alert(i); //10function outputNumbers(count){ (function(){ for(var i=0;i
3. 创建私有变量
可以使用构造函数或原型模式来创建私有变量:
function person(name){ this.getname = function(){ return name; }; this.setname = function(value){ name = value; }; } var person1 = new person(‘pingzidong’); person1.setname(‘mm’); alert(person1.getname());
评价:不同的实例都需要创建特权方法,考虑使用原型模式创建私有变量,如下:
(function(){ var name = ‘’; Person =function(val){ //Person全局函数 name = val; };Person.prototype.getname = function(){ return name; };Person.prototype.setname =function(val){ name = val; } })();var person = new Person(‘pingzidong’);var person2 = new Person(‘mm’);person1.getname //mmperson2.getname //mm
评价:
name 被所有的实例所共享