JS沙箱模式实例分析


Posted in Javascript onSeptember 04, 2017

本文实例讲述了JS沙箱模式。分享给大家供大家参考,具体如下:

//SandBox(['module1,module2'],function(box){});
/*
*
*
* @function
* @constructor
* @param []  array   模块名数组
* @param callback function 回调函数
* 功能:新建一块可用于模块运行的环境(沙箱),自己的代码放在回调函数里,且不会对其他的个人沙箱造成影响
和js模块模式配合的天衣无缝
*
* */
function SandBox() {
  //私有的变量
  var args = Array.prototype.slice.call(arguments),
      callback = args.pop(),
      //模块可以作为一个数组传递,或作为单独的参数传递
      modules = (args && typeof args[0] == "string") ? args : args[0];
  //确保该函数作为构造函数调用
  if (!(this instanceof SandBox)) {
    return new SandBox(modules,callback);
  }
  //不指定模块名和“*”都表示“使用所有模块”
  if (!modules || modules[0] === "*") {
    for(value in SandBox.modules){
      modules.push(value);
    }
  }
  //初始化所需要的模块(将想要的模块方法添加到box对象上)
    for (var i = 0; i < modules.length; i++) {
      SandBox.modules[modules[i]](this);
    }
  //自己的代码写在回调函数里,this就是拥有指定模块功能的box对象
  callback(this);
}
 SandBox.prototype={
   name:"My Application",
   version:"1.0",
   getName:function() {
     return this.name;
   }
 };
/*
* 预定义的模块
*
* */
SandBox.modules={};
SandBox.modules.event=function(box){
  //私有属性
  var xx="xxx";
  //公共方法
  box.attachEvent=function(){
    console.log("modules:event------API:attachEvent")
  };
  box.dettachEvent=function(){
  };
}
SandBox.modules.ajax=function(box) {
  var xx = "xxx";
  box.makeRequest = function () {
  };
  box.getResponse = function () {
  };
}
SandBox(['event','ajax'],function(box){
  box.attachEvent();
})

运行效果截图:

JS沙箱模式实例分析

JS沙箱模式实例分析

更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript中json操作技巧总结》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
js图片自动切换效果处理代码
May 07 Javascript
js+css 实现遮罩居中弹出层(随浏览器窗口滚动条滚动)
Dec 11 Javascript
javascript模拟post提交隐藏地址栏的参数
Sep 03 Javascript
jQuery老黄历完整实现方法
Jan 16 Javascript
JS实现图片的不间断连续滚动的简单实例
Jun 03 Javascript
jQuery文本框得到与失去焦点动态改变样式效果
Sep 08 Javascript
一个炫酷的Bootstrap导航菜单
Dec 28 Javascript
JavaScript实现计算多边形质心的方法示例
Jan 31 Javascript
Vue.js+Layer表格数据绑定与实现更新的实例
Mar 07 Javascript
解决Vue axios post请求,后台获取不到数据的问题方法
Aug 11 Javascript
Vue表单控件绑定图文详解
Feb 11 Javascript
vue下的@change事件的实现
Oct 25 Javascript
详解基于 axios 的 Vue 项目 http 请求优化
Sep 04 #Javascript
JS实现颜色的10进制转化成rgba格式的方法
Sep 04 #Javascript
利用yarn代替npm管理前端项目模块依赖的方法详解
Sep 04 #Javascript
JS实现匀加速与匀减速运动的方法示例
Sep 04 #Javascript
node-sass安装失败的原因与解决方法
Sep 04 #Javascript
使用MUI框架模拟手机端的下拉刷新和上拉加载功能
Sep 04 #Javascript
JS图片延迟加载插件LazyImgv1.0用法分析【附demo源码下载】
Sep 04 #Javascript
You might like
zend api扩展的php对象的autoload工具
2011/04/18 PHP
第四章 php数学运算
2011/12/30 PHP
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
2016/02/26 PHP
input 输入框获得/失去焦点时隐藏/显示文字(jquery版)
2013/04/02 Javascript
JS模式之单例模式基本用法
2015/06/30 Javascript
js如何判断输入字符串长度
2015/12/16 Javascript
AngularJs Modules详解及示例代码
2016/09/01 Javascript
jQuery实现checkbox列表的全选、反选功能
2016/11/24 Javascript
js实现登录框鼠标拖拽效果
2017/03/09 Javascript
浅谈Javascript常用正则表达式应用
2019/03/08 Javascript
微信小程序图片加载失败时替换为默认图片的方法
2019/12/09 Javascript
深入浅析JavaScript中的in关键字和for-in循环
2020/04/20 Javascript
Python中使用socket发送HTTP请求数据接收不完整问题解决方法
2015/02/04 Python
Python中模块pymysql查询结果后如何获取字段列表
2017/06/05 Python
Python中如何优雅的合并两个字典(dict)方法示例
2017/08/09 Python
Python排序搜索基本算法之选择排序实例分析
2017/12/09 Python
详解Python核心编程中的浅拷贝与深拷贝
2018/01/07 Python
Python mutiprocessing多线程池pool操作示例
2019/01/30 Python
python 实现将小图片放到另一个较大的白色或黑色背景图片中
2019/12/12 Python
Python文件操作函数用法实例详解
2019/12/24 Python
YesStyle美国/全球:购买亚洲时装、美容化妆品和生活百货
2017/01/16 全球购物
如何理解委托
2012/01/06 面试题
医院护士的求职信范文
2013/12/26 职场文书
工作疏忽检讨书
2014/01/25 职场文书
社区母亲节活动记录
2014/03/06 职场文书
黄金酒广告词
2014/03/21 职场文书
《山谷中的谜底》教学反思
2014/04/26 职场文书
纪委书记群众路线整改措施思想汇报
2014/10/09 职场文书
2015年采购工作总结
2015/04/10 职场文书
2016年大学生就业指导课心得体会
2015/10/09 职场文书
小学音乐课教学反思
2016/02/18 职场文书
详解Mysql 函数调用优化
2021/04/07 MySQL
go原生库的中bytes.Buffer用法
2021/04/25 Golang
JS代码编译器Monaco使用方法
2021/06/11 Javascript
vmware虚拟机打不开vmx文件怎么办 ?vmware虚拟机vmx文件打开方法
2022/04/08 数码科技
使用Django框架创建项目
2022/06/10 Python