//沙箱:模块化,沙箱是一个隔离的环境,最大的好处就是避免全局变量的污染.
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();//

  

javsscript闭包的一种使用场景--沙箱的更多相关文章

  1. Swift闭包概念与常见使用场景总结

    ·Swift 闭包 闭包(Closures)是自包含的功能代码块,可以在代码中使用或者用来作为参数传值. Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks)以及其他一些 ...

  2. 全面理解Javascript闭包和闭包的几种写法及用途

    好久没有写博客了,过了一个十一长假都变懒了,今天总算是恢复状态了.好了,进入正题,今天来说一说javascript里面的闭包吧!本篇博客主要讲一些实用的东西,主要将闭包的写法.用法和用途.  一.什么 ...

  3. [Unity-24] Unity的四种载入场景的方法

    Unity官方提供了4种载入场景(scene)的方法.各自是: 1. Application.LoadLevel():同步载入 2. Application.LoadLevelAsync():异步载入 ...

  4. Javascript闭包的几种用法

    一.什么是闭包和闭包的几种写法和用法 1.什么是闭包 闭包,官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分.闭包的特点: 1. ...

  5. Go 初体验 - 闭包的几种情况

    闭包: 闭包是可以包含自由(未绑定到特定对象)变量的代码块,这些变量不在这个代码块内或者任何全局上下文中定义,而是在定义代码块的环境中定义.要执行的代码块(由于自由变量包含在代码块中,所以这些自由变量 ...

  6. scala中Either的一种使用场景

    用scala有一年多了,对于scala中的Option和Try使用的较为频繁,对其应用场景相对熟悉一些.而对于Either,仔细回想一下却发现几乎(完全)没有使用过,其实并不是没有遇到过Either的 ...

  7. 转 全面理解Javascript闭包和闭包的几种写法及用途

    转自:http://www.cnblogs.com/yunfeifei/p/4019504.html 好久没有写博客了,过了一个十一长假都变懒了,今天总算是恢复状态了.好了,进入正题,今天来说一说ja ...

  8. 全面理解Javascript闭包和闭包的几种写法及用途【转】

    一.什么是闭包和闭包的几种写法和用法 1.什么是闭包 闭包,官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分.闭包的特点: 1. ...

  9. final修饰符的三种使用场景

    final有三种使用场景,各自是修饰变量.方法和类.不管哪种修饰.一旦声明为final类型.你将不能改变这个引用了,编译器会检查代码,假设你试图再次初始化,编译器会报错.以下我来详细说说每一种修饰场景 ...

随机推荐

  1. RQNOJ PID331 家族

    题目描述 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系. 规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚.如果x,y是 ...

  2. EasyUI的datagrid表格行高度增加

    这里以easyui的default样式为例: 找到easyui--->themes-->default-->easyui.css-->Ctrl+F找到.datagrid-row ...

  3. CommonJS规范 by ranyifeng

    1,概述 CommonJS是服务器端模块的规范,Node.js采用了这个规范. 根据CommonJS规范,一个单独的文件就是一个模块.加载模块使用require方法,该方法读取一个文件并执行,最后返回 ...

  4. c#拆分字符串英文和数字(包括国外所以文字)

    先创建一个类: /// <summary> /// 字符串分析 /// </summary> interface IStringAna { /// <summary> ...

  5. 读取hive文件并将数据导入hbase

    package cn.tansun.bd.hbase; import java.io.IOException; import java.net.URI; import java.util.List; ...

  6. Codeforces 1114E(数学+随机算法)

    题面 传送门 分析 通过二分答案,我们显然可以求出数组中最大的数,即等差数列的末项 接着随机取一些数组中的数,对他们两两做差,把得到的差取gcd即为公差 例a={1,5,9,13},我们随机取了1 9 ...

  7. 数的直径(两次DFS)

    题目传送门 桃花 题目描述 桃花一簇开无主,可爱深红映浅红.                                         ——<题百叶桃花> 桃花长在桃树上,树的每个节 ...

  8. java虚拟机规范(se8)——class文件格式(六)

    4.7.4 StackMapTable 属性 StackMapTable 属性是一个变长属性,位于 Code(§4.7.3)属性的属性表中.这个属性会在虚拟机类加载的类型阶段(§4.10.1)被使用. ...

  9. tomcat脚本

    !/bin/sh # eg: tomcat.sh start xxx # proc_dir="/usr/local/xxx/tomcat-zc-web/bin" proc_name ...

  10. ros节点启动和关闭相关

    Ros node启动与关闭 1. ros运行单位: Ros程序运行的单位是ros node. 2. ros 节点的启动: (1)初始化ros节点:通过调用ros::init()接口实现:可以通过参数指 ...