javascript对象创建模式

命名空间模式

使用一个全局的对象变量来作为所有模块的顶级父属性,所有的子模块都他的属性。

var MYAPP = MYAPP || {};  
var MYAPP.modules = {};  
MYAPP.modules.dom = {};  
MYAPP.modules.event = {};

我们也可以使用通用的命名方法去执行变量的命名初始化;

var ajax = namespace('MYAPP.modules.ajax');

模块模式

该模式提供了一种创建自包含非耦合代码片的有利工具,可以将它视为黑盒功能,可以根据软件的需求去自定义添加和删除你的模块。

命名初始化代码如上:

MYAPP.utities.array = (function () {  
    var uobj = MYAPP.utilities.object,
        ulang  = MYAPP.utilities.lang;

        array_string = '[object Array]',
        ops = Object.prototype.toString;

        //private functions
        //initial processes

        //public API

        return {  
          inArray:function () {  
              // code
            },  
            isArray:function () {  
              // code
            }
        }
}());

沙箱模式

该模式提供了一种可以解决命名空间模式带来的全局变量命名的问题,其提供了模块运行的环境,且各个模块之间的运行不会相互影响。

function Sandbox () {  
    var args = Array.prototype.slice.call(arguments),  
            callback = args.pop(),  
            modules = (!args[0] && args[0] === 'string') ? args : args[0],
            i;

            if(!(this instanceof Sandbox)){  
              return new Sandbox(args,callback);
            }  

        // private virable
        this.a = 1;
        this.b = 2;

        // modules
        if(!modules || modules === '*'){
            modules = [];  
          for(i in Sandbox.modules){  
              if(Sandbox.modules.hasOwnProperty(i))
                modules[i] = Sandbox.modules[I];
            }
        }

        // intialization
        for(i = 0;i < modules.length;i++){  
          Sandbox.modules[modules[I]](this);
        }  

    callback(this);
}

Sandbox.prototype = {  
    name:'My Application',
    version:'1.0',  
    getName:function () {  
      return this.name;
    }  
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值