javsscript闭包的一种使用场景--沙箱
//沙箱:模块化,沙箱是一个隔离的环境,最大的好处就是避免全局变量的污染. var model = (function () {//一个匿名的立即执行函数 var price = 900;//这是一个model局部的变量,外界无法访问,无法修改 //有效的保障了属性的安全性 return { pay: function (money) { if (money < price) { console.log("您的消费不够,请继继续消费"); } else { console.log("恭喜成为VIP"); } } } })(); console.log(model.pay(800));//"消费不够.." undefined model.pay(1000);//"VIP..." //千万注意不用打印,pay函数本身就有输出,如果在console.log中 //会输出函数的返回值. //在面向对象中使用沙箱 //应用场景:在页面初始化的时候要用到f1,f2,f3三个函数 //这三个函数不想让外界访问,需要把这单个方法声明成为构造函数 //内部私有的变量 var songManger = (function(){ function f1(){ console.log("函数f1的方法"); } function f2(){ console.log("函数f2的方法"); } function f3(){ console.log("函数f4的方法"); } function SongManger(){//声明一个构造函数 } SongManger.prototype={//在原型对象上扩展方法 init:function(){ f1(); f2(); f3(); } }; // return SongManger;//注意这个返回的是构造函数,使用之前需要先实例化一下 return new SongManger;//把构造函数返回,实例化一下,这样外边就不需要实例化了 })(); songManger.init();//