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 学习笔记 错误处理
Jul 30 Javascript
javascript实现的基于金山词霸网络翻译的代码
Jan 15 Javascript
javascript开发随笔二 动态加载js和文件
Nov 25 Javascript
用jquery中插件dialog实现弹框效果实例代码
Nov 15 Javascript
推荐 21 款优秀的高性能 Node.js 开发框架
Aug 18 Javascript
javascript实现获取浏览器版本、操作系统类型
Jan 29 Javascript
什么是JavaScript注入攻击?
Sep 14 Javascript
Node连接mysql数据库方法介绍
Feb 07 Javascript
js获取地址栏中传递的参数(两种方法)
Feb 08 Javascript
去掉vue 中的代码规范检测两种方法(Eslint验证)
Mar 21 Javascript
详解可以用在VS Code中的正则表达式小技巧
May 14 Javascript
Vue+scss白天和夜间模式切换功能的实现方法
Jan 05 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
PHP+javascript制作带提示的验证码源码分享
2014/05/28 PHP
thinkPHP5.1框架中Request类四种调用方式示例
2019/08/03 PHP
JavaScript 面向对象编程(2) 定义类
2010/05/18 Javascript
定义JavaScript二维数组采用定义数组的数组来实现
2012/12/09 Javascript
JS中Iframe之间传值及子页面与父页面应用
2013/03/11 Javascript
jquery中prop()方法和attr()方法的区别浅析
2013/09/06 Javascript
js点击出现悬浮窗效果不使用JQuery插件
2014/01/20 Javascript
Nodejs Post请求报socket hang up错误的解决办法
2014/09/25 NodeJs
javascript实现当前页导航激活的方法
2015/02/27 Javascript
jQuery插件windowScroll实现单屏滚动特效
2015/07/14 Javascript
jquery图片轮播特效代码分享
2020/04/20 Javascript
基于jQuery实现仿51job城市选择功能实例代码
2016/03/02 Javascript
vue实现微信分享朋友圈,发送朋友的示例讲解
2018/02/10 Javascript
总结js函数相关知识点
2018/02/27 Javascript
Nodejs + Websocket 指定发送及群聊的实现
2020/01/09 NodeJs
javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
2020/05/14 Javascript
Python实现求数列和的方法示例
2018/01/12 Python
基于DATAFRAME中元素的读取与修改方法
2018/06/08 Python
python selenium执行所有测试用例并生成报告的方法
2019/02/13 Python
基于腾讯云服务器部署微信小程序后台服务(Python+Django)
2019/05/08 Python
python 中的列表生成式、生成器表达式、模块导入
2019/06/19 Python
Python 余弦相似度与皮尔逊相关系数 计算实例
2019/12/23 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
2020/01/18 Python
基于CSS3实现的漂亮Menu菜单效果代码
2015/09/10 HTML / CSS
HTML5 Canvas画线技巧——实现绘制一个像素宽的细线
2013/08/02 HTML / CSS
保密工作实施方案
2014/02/24 职场文书
清扬洗发水广告词
2014/03/14 职场文书
2014年清明节寄语
2014/04/03 职场文书
2014年秋季开学寄语
2014/08/02 职场文书
个人批评与自我批评范文
2014/10/17 职场文书
边城读书笔记
2015/06/29 职场文书
保护环境建议书作文300字
2015/09/14 职场文书
详解CSS伪元素的妙用单标签之美
2021/05/25 HTML / CSS
MySQL 发生同步延迟时Seconds_Behind_Master还为0的原因
2021/06/21 MySQL
《杜鹃的婚约》OP主题曲「凸凹」无字幕影像公开
2022/04/08 日漫
python中Pyqt5使用Qlabel标签播放视频
2022/04/22 Python