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();//
    ​
    

      

  • 相关阅读:
    转载:quartz详解:quartz由浅入深
    git提交忽略文件或文件夹
    Spring学习笔记(一)
    转载:RabbitMQ常用命令
    linux安装rabbitMQ
    linux安装redis
    springMVC+spring+mybatis多数据源配置
    (二)RabbitMQ使用笔记
    ASP.NET Core 异常处理与日志记录
    ASP.NET Core中间件实现分布式 Session
  • 原文地址:https://www.cnblogs.com/itlyh/p/6045765.html
Copyright © 2011-2022 走看看