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源码分析-03构造jQuery对象-源码结构和核心函数
Nov 14 Javascript
jquery实现弹出层完美居中效果
Mar 03 Javascript
jQuery通过点击行来删除HTML表格行的实现示例
Sep 10 Javascript
纯js模拟div层弹性运动的方法
Jul 27 Javascript
jquery带下拉菜单和焦点图代码分享
Aug 24 Javascript
js制作带有遮罩弹出层实现登录注册表单特效代码分享
Sep 05 Javascript
JS提交form表单实例分析
Dec 10 Javascript
JS小数转换为整数的方法分析
Jan 07 Javascript
js a标签点击事件
Mar 30 Javascript
layui 数据表格复选框实现单选功能的例子
Sep 19 Javascript
vue+element树组件 实现树懒加载的过程详解
Oct 21 Javascript
node koa2 ssr项目搭建的方法步骤
Dec 11 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数据库密码的找回的步骤
2011/01/12 PHP
php判断数组中是否存在指定键(key)的方法
2015/03/17 PHP
PHP url的pathinfo模式加载不同控制器的简单实现
2016/08/12 PHP
PHP简单遍历对象示例
2016/09/28 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
FireFox中textNode分片的问题
2007/04/10 Javascript
jquery绑定原理 简单解析与实现代码分享
2011/09/06 Javascript
关于include标签导致js路径找不到的问题分析及解决
2013/07/09 Javascript
jquery交替变换颜色的三种方法 实例代码
2013/11/19 Javascript
javascript搜索框点击文字消失失焦时文本出现
2014/09/18 Javascript
jQuery地图map悬停显示省市代码分享
2015/08/20 Javascript
搞定immutable.js详细说明
2016/05/02 Javascript
js 提交form表单和设置form表单请求路径的实现方法
2016/10/25 Javascript
VUE开发一个图片轮播的组件示例代码
2017/03/06 Javascript
React数据传递之组件内部通信的方法
2017/12/31 Javascript
vue项目实现github在线预览功能
2018/06/20 Javascript
vue 中的 render 函数作用详解
2020/02/28 Javascript
jQuery实现动态操作table行
2020/11/23 jQuery
JavaScript 中的六种循环方法
2021/01/06 Javascript
Python记录详细调用堆栈日志的方法
2015/05/05 Python
Python字符串特性及常用字符串方法的简单笔记
2016/01/04 Python
Python 创建空的list,以及append用法讲解
2018/05/04 Python
Python 使用类写装饰器的小技巧
2018/09/30 Python
Python 实现子类获取父类的类成员方法
2019/01/11 Python
python如何以表格形式打印输出的方法示例
2019/06/21 Python
tensorflow使用range_input_producer多线程读取数据实例
2020/01/20 Python
基于python SMTP实现自动发送邮件教程解析
2020/06/02 Python
CSS3对背景图片的裁剪及尺寸和位置的设定方法
2016/03/07 HTML / CSS
医学院毕业生自荐信范文
2014/03/06 职场文书
个人合伙协议书范本
2014/10/14 职场文书
2014年个人教学工作总结
2014/12/09 职场文书
高三英语教学计划
2015/01/23 职场文书
客户付款通知书
2015/04/23 职场文书
2015年环境监察工作总结
2015/07/23 职场文书
导游词之新疆-喀纳斯
2019/10/10 职场文书
仅用一句SQL更新整张表的涨跌幅、涨跌率的解决方案
2021/05/06 MySQL