javascript 闭包
2014-03-06 15:54
218 查看
1 理解作用域
1 我们构造一个myObject 对象,它拥有一个value属性和一个increment的方法,假定我们希望保护该值不会被非法更改var myObject = function(){
var value = 0;
return {
increment:function(inc){
value +=typeof inc === "number"?inc:1;
},
getValue:function(){
return value;
}
}
}();//直接执行,返回结果
我们并没有把一个函数值复制myObject.而是把调用该函数后返回的记过赋值了它。这些方法继续享有访问value变量的特权。
2 var quo = function(status){
return {
get_status:function(){
return status;
}
};
};
var myQuo = quo("amazed");
myQuo.get_status();//amazed
该方法被设计成无须加new来使用,所以名字也没有字母大写。当调用quo时,返回包含get_statsu方法的一个新对象。保存在myQuo中,get_statsu依然享有访问参数本身的权利。
因为该函数可以访问它被创建时所处的上下文环境,这就被成为闭包。
get_status方法
3 再来一个例子
var add_the_handlers = function(node){
var i;
for(i=0;i<nodes.length;i++){
node[i].onclick = function(){
alert(i);
};
}
};
点击某个栏目弹出提示,结果测试会每次都弹出同一个数值。
因为每个调用的都是最后的i值。
修改:
var add_the_handlers = function(node){
var i;
for(i=0;i<nodes.length;i++){
node[i].onclick = function(i){
return function(e){
alert(i);
};
}(i);
}
};
相关文章推荐
- JavaScript 闭包适用的场合 优缺点
- javascript深入理解js闭包
- javascript的闭包与scope
- javascript 闭包
- javascript知识点之“闭包”
- javascript 闭包详解
- JavaScript 初步闭包理解
- javascript中的闭包。
- 浅谈JavaScript中的作用域和闭包问题
- 深入理解javascript原型和闭包(完结)
- Javascript 闭包与变量
- 深入理解javascript原型和闭包系列 深入理解javascript原型和闭包(3)——prototype原型
- 理解JAVASCRIPT 闭包
- javascript-闭包是什么
- Javascript 闭包与高阶函数 ( 一 )
- javascript 闭包详解
- javascript es5利用闭包特性形成私有方法
- 学学JavaScript的闭包特性
- javascript-闭包
- 深入理解javascript原型和闭包(4)——隐式原型