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();
})




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值