一个完整的包命名空间定义实现的代码 -- 色色原创

//定义顶块命名空间
if (!window['BJE']) {
	window['BJE'] = {};
}

/**
 * 包列表 -- 用于调试使用
 * @type {}
 */
BJE.packageList = [];
/**
 * 定义包命名空间
 * 
 * @packageNames 包名
 * BJE.package("bje.css.sprite",'bje.ext');
 */
 BJE.package = function() {
	
	/**
	 * 验证包是否存在 
	 * 从前往后验证,前置包节点不存在,返回false,所有包节点匹配返回true
	 * 验证的目的,在于不重复创建
	 */
	function isPackageExist(packageName){		
		var nsArr = packageName.split(".");		
		var ns = '' ,noDefine = false  ;
		var tpl = 'if (typeof #ns#  == "undefined") noDefine = true ;';
		for(k in nsArr){
			ns += nsArr[k] + "." ; 
			// 要替换最后的.号			
			//eval('if (typeof ' + ns.replace(/.$/gi, "") + ' == "undefined") noDefine = true ;');
			eval(tpl.replace(/#ns#/gi,ns.replace(/.$/gi, "")));			
			if (noDefine)
				return false ;
		}
		BJE.packageList.push(packageName) ;
		return true ;
	}
	
	/**
	 * 创建包 -- 传入包名
	 */
	function create(packageName){
		if (!isPackageExist(packageName)){
			//do something ...	
			var o = null, i, j, d, rt;
			d = packageName.split(".");
			rt = d[0];
			eval('if (typeof ' + rt + ' == "undefined"){' + rt + ' = {};} o = '
					+ rt + ';');
			for (j = 1; j < d.length; ++j) {
				o[d[j]] = o[d[j]] || {};
				o = o[d[j]];
			}
			BJE.packageList.push(packageName) ;
		}
	}
	
	function remove(packageName){
		if (isPackageExist(packageName)){
			//do something ...	
		}
	}
	
	var packageNames = arguments;
	for (i = 0; i < packageNames.length; ++i) {
		//var packageNameArray = packageNames[i].split(".");
		if (!isPackageExist(packageNames[i]))
			create(packageNames[i]);
	}
}

 

 

还是有些不完整,测试如下"

 

BJE.package("BJE.css.sprite", 'BJE.ext', 'BJE.ext.mail');
alert(BJE.packageList);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值