你必须知道的【闭包】陷阱和案例(5)
来源:未知 责任编辑:责任编辑 发表时间:2014-05-26 11:00 点击:次
}).done(function (msg) {
alert("Data Saved: " + msg);
$(outThis).dialog("close");
});
}
}(this))
},
场景2---循环中的内部函数
function TestObj(name) {
this.name = name;
}
var objs = [];
var obj;
function test() {
for (var i = 0; i < 100; i++) {
var name = "张磊" + i;
obj = new TestObj(name);
obj.printName = function () {
console.log(obj.name);
}
objs.push(obj);
}
}
//外部函数执行,闭包形成。内部函数obj.printName中的obj全部指向最后一次new TestObj(name);
test();
//所以这里会输出100次-----"张磊99"
for (var i in objs) {
objs[i].printName();
}
解决办法
function TestObj(name) {
this.name = name;
}
var objs = [];
var obj;
function test() {
for (var i = 0; i < 100; i++) {
var name = "张磊" + i;
obj = new TestObj(name);
(function (target) {
相关新闻>>
- javascript闭包的高级用法
- JavaScript全面了解作用域(基础、this、闭包、继承)之一
- JavaScript全面了解作用域(基础、this、闭包、继承)之二
- 我知道的JavaScript -- 设计模式(桥接)应用之 – 验证器
- 我知道的JavaScript -- Json对象扁平化
- 我知道的JavaScript -- 数据结构之– Hashtable
- 学习Javascript闭包(Closure)
- 举例详细说明javascript作用域、闭包原理以及性能问题
- Javascript之Undefined你可能不知道的
- JavaScript重构(五):利用原型和闭包,完成组件方法
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>