zoukankan      html  css  js  c++  java
  • 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();//
    ​
    

      

  • 相关阅读:
    [HNOI2008] [BZOJ1008] 越狱|组合数学
    (转)位运算简介及使用技巧
    AW297 赤壁之战(数据结构优化DP)
    AW280 陪审团
    AW288 休息时间
    AW281 硬币
    AW383 观光
    AW366 看牛 (欧拉回路)
    AW365 圆桌骑士
    AW363 B城
  • 原文地址:https://www.cnblogs.com/itlyh/p/6045765.html
Copyright © 2011-2022 走看看