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编程起步(第二课)
Feb 27 Javascript
让浏览器DOM元素最后加载的js方法
Jul 29 Javascript
JavaScript字符串对象charAt方法入门实例(用于取得指定位置的字符)
Oct 17 Javascript
JavaScript学习笔记(三):JavaScript也有入口Main函数
Sep 12 Javascript
JavaScript原生xmlHttp与jquery的ajax方法json数据格式实例
Dec 04 Javascript
Vue.js每天必学之构造器与生命周期
Sep 05 Javascript
微信小程序  网络请求API详解
Oct 25 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(放大缩小)
Dec 02 Javascript
JS焦点图,JS 多个页面放多个焦点图的实例
Dec 08 Javascript
Vue组件中slot的用法
Jan 30 Javascript
微信小程序checkbox组件使用详解
Jan 31 Javascript
详解angular路由高亮之RouterLinkActive
Apr 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
PHPUnit PHP测试框架安装方法
2011/03/23 PHP
对淘宝URL中ID提取的PHP代码
2013/09/01 PHP
php session_start()出错原因分析及解决方法
2013/10/28 PHP
PHP中可以自动分割查询字符的Parse_str函数使用示例
2014/07/25 PHP
PHP使用内置函数生成图片的方法详解
2016/05/09 PHP
用jQuery模拟select下拉框的简单示例代码
2014/01/26 Javascript
关于Javascript 对象(object)的prototype
2014/05/09 Javascript
AngularJS的ng Http Request与response格式转换方法
2016/11/07 Javascript
JS实现倒计时(天数、时、分、秒)
2016/11/16 Javascript
jquery 禁止鼠标右键并监听右键事件
2017/04/27 jQuery
JavaScript数据结构之双向链表和双向循环链表的实现
2017/11/28 Javascript
Javascript将图片的绝对路径转换为base64编码的方法
2018/01/11 Javascript
深入理解vue中slot与slot-scope的具体使用
2018/01/26 Javascript
详解javascript中的变量提升和函数提升
2018/05/24 Javascript
教你使用vue-cli快速构建的小说阅读器
2019/05/13 Javascript
通过JS深度判断两个对象字段相同
2019/06/14 Javascript
JS数组降维的实现Array.prototype.concat.apply([], arr)
2020/04/28 Javascript
js实现双人五子棋小游戏
2020/05/28 Javascript
Python Sleep休眠函数使用简单实例
2015/02/02 Python
python中的闭包用法实例详解
2015/05/05 Python
浅析Python中MySQLdb的事务处理功能
2016/09/21 Python
python 函数中的内置函数及用法详解
2019/07/02 Python
Python pandas实现excel工作表合并功能详解
2019/08/29 Python
详解Python list和numpy array的存储和读取方法
2019/11/06 Python
wxPython实现画图板
2020/08/27 Python
tensorflow之并行读入数据详解
2020/02/05 Python
pytorch实现保证每次运行使用的随机数都相同
2020/02/20 Python
Django实现列表页商品数据返回教程
2020/04/03 Python
css3实现蒙版弹幕功能
2019/06/18 HTML / CSS
澳洲在线厨具商店:Kitchen Style
2018/05/05 全球购物
爱普生美国官网:Epson美国
2018/11/05 全球购物
模特职业生涯规划范文
2014/02/26 职场文书
民事诉讼代理授权委托书范本
2014/10/08 职场文书
Idea连接MySQL数据库出现中文乱码的问题
2021/04/14 MySQL
JavaScript流程控制(循环)
2021/12/06 Javascript
Java实现贪吃蛇游戏的示例代码
2022/09/23 Java/Android