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

    xiaoxiao2022-06-30  61

    //定义顶块命名空间 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);

    转载请注明原文地址: https://ju.6miu.com/read-1125727.html

    最新回复(0)