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 相关文章推荐
Javascript中暂停功能的实现代码
Mar 04 Javascript
js 强制弹出窗口代码研究-又一款代码
Mar 20 Javascript
用js判断页面是否加载完成实现代码
Dec 11 Javascript
jquery跨域请求示例分享(jquery发送ajax请求)
Mar 25 Javascript
js实现交换运动效果的方法
Apr 10 Javascript
jquery实现标签上移、下移、置顶
Apr 26 Javascript
浅谈javascript 函数表达式和函数声明的区别
Jan 05 Javascript
Bootstrap轮播插件使用代码
Oct 11 Javascript
js实现鼠标拖动功能
Mar 20 Javascript
vue数据双向绑定的注意点
Jun 23 Javascript
如何理解Vue的.sync修饰符的使用
Aug 17 Javascript
jQuery鼠标滑过横向时间轴样式(代码详解)
Nov 01 jQuery
详解基于 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 日漫
Zend 输出产生XML解析错误
2009/03/03 PHP
php SQL之where语句生成器
2009/03/24 PHP
php 数组的合并、拆分、区别取值函数集
2010/02/15 PHP
在VS2008中编译MYSQL5.1.48的方法
2010/07/03 PHP
Dwz与thinkphp整合下的数据导出到Excel实例
2014/12/04 PHP
php获取远程文件的内容和大小
2015/11/03 PHP
laravel5创建service provider和facade的方法详解
2016/07/26 PHP
PHP中字符与字节的区别及字符串与字节转换示例
2016/10/15 PHP
php实现通过soap调用.Net的WebService asmx文件
2017/02/27 PHP
php基于session锁防止阻塞请求的方法分析
2017/08/07 PHP
PHP设计模式入门之状态模式原理与实现方法分析
2020/04/26 PHP
写自已的js类库需要的核心代码
2012/07/16 Javascript
MyEclipse取消验证Js的两种方法
2013/11/14 Javascript
把文本中的URL地址转换为可点击链接的JavaScript、PHP自定义函数
2014/07/29 Javascript
JavaScript实现简易的天数计算器实例【附demo源码下载】
2017/01/18 Javascript
原生js实现无限循环轮播图效果
2017/01/20 Javascript
详解VUE的状态控制与延时加载刷新
2017/03/27 Javascript
浅谈关于axios和session的一些事
2017/07/13 Javascript
基于Jquery Ajax type的4种类型(详解)
2017/08/02 jQuery
Javascript中toFixed计算错误(依赖银行家舍入法的缺陷)解决方法
2017/08/22 Javascript
小程序实现背景音乐播放和暂停
2020/06/19 Javascript
浅谈JavaScript中的“!!”作用
2020/08/03 Javascript
详解Vue.js 可拖放文本框组件的使用
2021/03/03 Vue.js
Python多进程并发(multiprocessing)用法实例详解
2015/06/02 Python
pytorch实现mnist分类的示例讲解
2020/01/10 Python
python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
2020/06/04 Python
阿提哈德航空官方网站:Etihad Airways
2017/01/06 全球购物
全神贯注教学反思
2014/02/03 职场文书
体育之星事迹材料
2014/05/11 职场文书
教学改革问题查摆整改措施
2014/09/27 职场文书
2015欢度元旦标语口号
2014/12/09 职场文书
2015年党建工作目标责任书
2015/05/08 职场文书
小学生红领巾广播稿
2015/08/19 职场文书
电力企业职工培训心得体会
2016/01/11 职场文书
Vue实现跑马灯样式文字横向滚动
2021/11/23 Vue.js