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圆角插件
Oct 26 Javascript
网易JS面试题与Javascript词法作用域说明
Nov 09 Javascript
js倒计时小程序
Nov 05 Javascript
Javascript写入txt和读取txt文件示例
Feb 12 Javascript
js日期联动示例
May 02 Javascript
javascript实现2016新年版日历
Jan 25 Javascript
jquery 校验中国身份证号码实例详解
Apr 11 jQuery
JavaScript屏蔽Backspace键的实现代码
Nov 02 Javascript
Vue项目中跨域问题解决方案
Jun 05 Javascript
vue环形进度条组件实例应用
Oct 10 Javascript
Jquery动态列功能完整实例
Aug 30 jQuery
js实现星星海特效的示例
Sep 28 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实现的常见排序算法汇总
2014/09/08 PHP
yii实现图片上传及缩略图生成的方法
2014/12/04 PHP
jQuery向下滚动即时加载内容实现的瀑布流效果
2016/01/07 PHP
Yii实现Command任务处理的方法详解
2016/07/14 PHP
基于php流程控制语句和循环控制语句(讲解)
2017/10/23 PHP
xtree.js 代码
2007/03/13 Javascript
javascript下过滤数组重复值的代码
2007/09/10 Javascript
Extjs优化(二)Form表单提交通用实现
2013/04/15 Javascript
js window.onload 加载多个函数和追加函数详解
2014/01/08 Javascript
javascript回车完美实现tab切换功能
2014/03/13 Javascript
js 设置缓存及获取设置的缓存
2014/05/08 Javascript
利用jQuery实现可以编辑的表格
2014/05/26 Javascript
JavaScript常用的返回,自动跳转,刷新,关闭语句汇总
2015/01/13 Javascript
jQuery实现感应鼠标动画效果自动伸长的输入框实例
2015/02/24 Javascript
JavaScript中Number.NEGATIVE_INFINITY值的使用详解
2015/06/05 Javascript
解析JavaScript的ES6版本中的解构赋值
2015/07/28 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的方法
2016/11/29 Javascript
Nodejs进阶:express+session实现简易登录身份认证
2017/04/24 NodeJs
Ant Design Pro 下实现文件下载的实现代码
2019/12/03 Javascript
Python使用爬虫猜密码
2016/02/19 Python
深入学习Python中的装饰器使用
2016/06/20 Python
Python爬虫框架Scrapy实例代码
2018/03/04 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
2018/10/29 Python
python实现推箱子游戏
2020/03/25 Python
Django框架下静态模板的继承操作示例
2019/11/08 Python
Python处理PDF与CDF实例
2020/02/26 Python
CSS3中颜色线性渐变实战
2015/07/18 HTML / CSS
文化宣传方案
2014/03/13 职场文书
端午节演讲稿
2014/05/23 职场文书
党员作风建设整改方案
2014/10/27 职场文书
教师党员群众路线教育实践活动心得体会
2014/11/04 职场文书
首席执行官观后感
2015/06/03 职场文书
《半截蜡烛》教学反思
2016/02/19 职场文书
《悬崖边的树》读后感2篇
2019/12/02 职场文书
用Python制作灯光秀短视频的思路详解
2021/04/13 Python
Python道路车道线检测的实现
2021/06/27 Python