您的位置:首页 > Web前端 > JavaScript

关于javascript的闭包、模块化以及单例模式

2016-05-15 21:46 363 查看

为什么放在一起?

模块化本身就自带闭包性质的体现。下面代码:

<span style="white-space:pre">	</span>//定义可多次实例化的模块foo
function foo () {
console.log("foo run");
var num = 0;
return {
addNum: function () {
num++;
},
showNum: function () {
console.log(num);
}
}
}

var bar = foo();
var zar = foo();
bar.addNum();
bar.showNum();
zar.showNum();

//使用IIFE的方式实例化模块tar,单例模式
//IIFE会建立新作用域。这里因为在运行结束后返回了一个含有该作用域引用的函数,形成闭包
var tar = (function () {
console.log("tar run");
var num = 0;
return {
addNum: function () {
num++;
},
showNum: function () {
console.log(num);
}
}
})()
tar.showNum();


什么是闭包呢?看下图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: