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 相关文章推荐
利用google提供的API(JavaScript接口)获取网站访问者IP地理位置的代码详解
Jul 24 Javascript
Js冒泡事件详解及阻止示例
Mar 21 Javascript
JS hashMap实例详解
May 26 Javascript
jquery mobile实现可折叠的导航按钮
Mar 11 Javascript
JS实现的点击表头排序功能示例
Mar 27 Javascript
详解angularJs中关于ng-class的三种使用方式说明
Jun 02 Javascript
详解Angular调试技巧之报错404(not found)
Jan 31 Javascript
用POSTMAN发送JSON格式的POST请求示例
Sep 04 Javascript
Vue框架TypeScript装饰器使用指南小结
Feb 18 Javascript
JS实现继承的几种常用方式示例
Jun 22 Javascript
Vue.js中使用Vuex实现组件数据共享案例
Jul 31 Javascript
vue集成一个支持图片缩放拖拽的富文本编辑器
Jan 29 Vue.js
详解基于 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
星际中的相关伤害
2020/03/04 星际争霸
php中字符串和正则表达式详解
2014/10/23 PHP
php可应用于面包屑导航的迭代寻找家谱树实现方法
2015/02/02 PHP
学习php设计模式 php实现工厂模式(factory)
2015/12/07 PHP
zend framework重定向方法小结
2016/05/28 PHP
PHP二维数组去重实例分析
2016/11/18 PHP
由php中字符offset特征造成的绕过漏洞详解
2017/07/07 PHP
JavaScript XML实现两级级联下拉列表
2008/11/10 Javascript
Mootools 1.2教程 滑动效果(Slide)
2009/09/15 Javascript
javascript 在网页中的运用(asp.net)
2009/11/23 Javascript
Jquery跨域获得Json时invalid label错误的解决办法
2011/01/11 Javascript
Javascript变量函数浅析
2011/09/02 Javascript
jquery命令汇总,方便使用jquery的朋友
2012/06/26 Javascript
jquery封装的对话框简单实现
2013/07/21 Javascript
jquery动态改变onclick属性导致失效的问题解决方法
2013/12/04 Javascript
JavaScript中的Math 使用介绍
2014/04/21 Javascript
js中获取jsp表单中radio类型的值简单实例
2016/08/15 Javascript
JS前端笔试题分析
2016/12/19 Javascript
详解Angular.js数据绑定时自动转义html标签及内容
2017/03/30 Javascript
JS原生数据双向绑定实现代码
2017/08/14 Javascript
JavaScript数据类型的存储方法详解
2017/08/25 Javascript
EasyUI Tree树组件无限循环的解决方法
2017/09/27 Javascript
在nginx上部署vue项目(history模式)的方法
2017/12/28 Javascript
用node-webkit把web应用打包成桌面应用(windows环境)
2018/02/01 Javascript
详解JavaScript作用域和作用域链
2019/03/19 Javascript
Vue.js@2.6.10更新内置错误处机制Fundebug同步支持相应错误监控
2019/05/13 Javascript
利用JS判断元素是否为数组的方法示例
2021/01/08 Javascript
Python基于正则表达式实现检查文件内容的方法【文件检索】
2017/08/30 Python
Python实现ATM系统
2020/02/17 Python
使用Python将语音转换为文本的方法
2020/08/10 Python
美国皮靴公司自1863年:The Frye Company
2016/11/30 全球购物
运动会领导邀请函
2014/02/05 职场文书
个人对照检查剖析材料
2014/10/13 职场文书
简短的36句中秋节祝福信息语句
2019/09/09 职场文书
jdbc使用PreparedStatement批量插入数据的方法
2021/04/27 MySQL
Java 多线程并发FutureTask
2022/06/28 Java/Android