闭包定义JS模块:
具有特定功能的js文件
将所有数据和功能都封装在一个函数内部(私有的)
只向外暴露一个包含n个方法的对象或函数
模块的使用者 只需要通过模块暴露对象调用方法来实现对应的功能
JS模块部分
function MyModule(){
//私有属性和数据
var a=6,b=29;
function Addition(){
console.log(a++);
}
function Subtraction(){
console.log(b++)
}
//向外暴露
return {
//字符串:函数名
Addition:Addition,
Subtraction:Subtraction
};
}
HTML部分 ,这个办法需要先执行函数
<body>
<script src="闭包js模块.js"></script>
<script>
var module=MyModule();
module.Addition();
module.Subtraction();
</script>
</body>
匿名函数自调用的方法
(//匿名函数自调用
function(){
//私有属性和数据
var a=6,b=29;
function Addition(){
console.log(a++);
}
function Subtraction(){
console.log(b++)
}
//向外暴露
window.MyModule2={
//字符串:函数名
Addition:Addition,
Subtraction:Subtraction
}
})()
直接引入直接就可以使用,同样有闭包
<body>
<script src="闭包js模块.js"></script>
<script src="./闭包js模块2.js"></script>
<script>
var module=MyModule();
module.Addition();
module.Subtraction();
MyModule2.Subtraction();
MyModule2.Addition();
</script>
</body>