论坛首页 Web前端技术论坛

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

浏览 2135 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (8) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-08-10  
//定义顶块命名空间
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);

   发表时间:2009-08-11  
Ext.ns()
0 请登录后投票
   发表时间:2009-08-25  
function isNumber(val) {   
    //return typeof val == "number"; 不能验证数字字符串  
    //return /^\d+$/.test(val);   不能验证 小数
    return /^\d+(\.\d+)?$/.test(val); 
} 
var iv = isNumber ;
alert(iv(123) + "/" + iv(123.2) + "/"  + iv("123") + "/"  + iv("123.23") + "/" + iv("12.21a") );



递进学习js 验证是否为数字
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics