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 相关文章推荐
Jquery index()方法 获取相应元素索引值
Oct 12 Javascript
js自定义事件及事件交互原理概述(二)
Feb 01 Javascript
jQuery使用prepend()方法在元素前添加内容用法实例
Mar 26 Javascript
jquery mobile界面数据刷新的实现方法
May 28 Javascript
最丑的时钟效果!js canvas时钟制作方法
Aug 15 Javascript
利用BootStrap弹出二级对话框的简单实现方法
Sep 21 Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
Oct 24 Javascript
微信小程序 封装http请求实例详解
Jan 16 Javascript
Bootstrap 设置datetimepicker在屏幕上面弹出设置方法
Mar 21 Javascript
angularJs中$http获取后台数据的实例讲解
Aug 08 Javascript
layer.confirm取消按钮绑定事件的方法
Aug 17 Javascript
基于vue+element实现全局loading过程详解
Jul 10 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
Php注入点构造代码
2008/06/14 PHP
PHP 日期加减的类,很不错
2009/10/10 PHP
ThinkPHP3.1新特性之G方法的使用
2014/06/19 PHP
php列出mysql表所有行和列的方法
2015/03/13 PHP
php中switch语句用法详解
2015/08/17 PHP
PHP简单实现合并2个数字键数组值的方法
2017/05/30 PHP
php实现将二维关联数组转换成字符串的方法详解
2017/07/31 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
基于jquery的二级联动菜单实现代码
2011/04/25 Javascript
jquery中通过过滤器获取表单元素的实现代码
2011/07/05 Javascript
javascript检测浏览器flash版本的实现代码
2011/12/06 Javascript
javascript之Array 数组对象详解
2016/06/07 Javascript
深入理解javascript中concat方法
2016/12/12 Javascript
纯js实现隔行变色效果
2017/11/29 Javascript
在微信小程序中渲染HTML内容的方法示例
2018/09/28 Javascript
微信小程序页面缩放式侧滑效果的实现代码
2018/11/15 Javascript
JavaScript解析JSON数据示例
2019/07/16 Javascript
Vue项目页面跳转时浏览器窗口上方显示进度条功能
2020/03/26 Javascript
从零学python系列之新版本导入httplib模块报ImportError解决方案
2014/05/23 Python
Python的Flask站点中集成xhEditor文本编辑器的教程
2016/06/13 Python
使用Python绘制图表大全总结
2017/02/11 Python
详解PyCharm+QTDesigner+PyUIC使用教程
2019/06/13 Python
对pyqt5多线程正确的开启姿势详解
2019/06/14 Python
django使用xadmin的全局配置详解
2019/11/15 Python
Python enumerate内置库用法解析
2020/02/24 Python
解决jupyter notebook 出现In[*]的问题
2020/04/13 Python
美国彩妆品牌:Coastal Scents
2017/04/01 全球购物
加拿大票务网站:Ticketmaster加拿大
2017/07/17 全球购物
欧缇丽加拿大官方网站:Caudalie加拿大
2019/07/18 全球购物
新闻编辑专业毕业自荐书范文
2014/02/05 职场文书
党的群众路线教育实践活动心得体会900字
2014/03/07 职场文书
六查六看心得体会
2014/10/14 职场文书
网络营销计划
2015/01/17 职场文书
公司欠款证明
2015/06/24 职场文书
Python异常类型以及处理方法汇总
2021/06/05 Python
利用python做数据拟合详情
2021/11/17 Python