JS多级命名空间

JS多级命名空间

JavaScript不像C#或Java,有专门的namespace和package语法支持,当JS复杂到一定程度,尤其是引用大量的第三方JS框架和类库之后,命名冲突就会成为一个严重的问题,因此使用JS自己的变通方式建立命名空间很重要。

最简单的实现命名空间的方法,代码示例如下:

//这是伪代码,: 
var com;     
if(!com) com = {}; //第一级域名     
com.ModuleClass = {}; //第二级域名     
com.ModuleClass.函数名1=function(){     
    函数体;     
}   
com.ModuleClass.函数名2=function(){     
    函数体;     
}

还可以建立一个注册多级命名空间的机制:
//1、命名空间注册工具类     
var Namespace = new Object();     
             
Namespace.register = function(path){     
    var arr = path.split(".");     
    var ns = "";     
    for(var i=0;i<arr.length;i++){     
        if(i>0) ns += ".";     
        ns += arr[i];     
        eval("if(typeof(" + ns + ") == ‘undefined‘) " + ns + " = new Object();");     
    }     
}     
     
//2、注册命名空间 com.boohee.ui     
Namespace.register("com.boohee.ui");     
     
//3、使用命名空间     
com.boohee.ui.TreeGrid = function(){     
    this.sayHello = function(name){     
        alert("Hello " + name);     
    }     
}     
     
var t = new com.boohee.ui.TreeGrid();     
t.sayHello("uid");

===========================================================================

/*** 构造命名空间 ***/
/*
* if (typeof(window.Com) == "undefined")//也可以使用:if (typeof(Com) == "undefined")
{
window.Com = {};//也可以使用:window.Com = new Object();
}

*/
//一级:BrcLib
if(typeof(BrcLib) == "undefined")
{
    BrcLib = new Object();
}
//二级:BrcLib.JavaScript
if(typeof(BrcLib.JavaScript)=="undefined")
{
    BrcLib.JavaScript = {};
}
//三级:BrcLib.JavaScript.File
if(typeof(BrcLib.JavaScript.File)=="undefined")
{
    BrcLib.JavaScript.File = {};
}
//三级:BrcLib.JavaScript.Message
if(typeof(BrcLib.JavaScript.Message)=="undefined")
{
    BrcLib.JavaScript.File = {};
}

//静态方法
BrcLib.JavaScript.Message.ShowMessage = function(ms)
{
alert(ms);
}

//必须使用new后的方法
BrcLib.JavaScript.Message.prototype.formatString = function(format)
{
//code
}

时间: 2024-10-26 09:09:22

JS多级命名空间的相关文章

avalon.js 多级下拉框实现

学习avalon.js的时候,有一个多级下拉框的例子,地址 戳这里 代码实现了联动, 但是逻辑上面理解有点难度,获取选择的值 和 页面初始化 功能存在问题. 在写地图编辑的时候,也用到了多级下拉框,特地整理下例子,其中主要实现的难点就是初始化数组的值. var data = [ {"id": 0, "name": "1公司", "grade": -1, "parentid": "-1"}

js的命名空间 &amp;&amp; 单体模式 &amp;&amp; 变量深拷贝和浅拷贝 &amp;&amp; 页面弹窗设计

说在前面:这是我近期开发或者看书遇到的一些点,觉得还是蛮重要的. 一.为你的 JavaScript 对象提供命名空间 <!DOCTYPE html> <html> <head> <title>为自己的js对象提供命名空间</title> </head> <body> <div>封装自己的数据和函数,防止和其他的库搞混了</div> <script> var jscbObject = {

JS把命名空间传递给模块形式

//方法依赖 jquery 或者其他 有扩展方法 extend() 类库  例如: underscore.js 链接地址 http://underscorejs.org var app = {}; (function(exports){ (functions ( exports ) { var api = { modulTest: function modulTest() { return true; } }; $.extend(exports, api); }(  (typeof export

JS模拟命名空间

简单记录下自己的理解: 为了避免命名的冲突,Javascript可以通过使用对象来模拟实现命名空间,个人感觉这也是“动态语言”比较灵活的一个点. 1 //--------命名空间JsFramework1------------- 2 var JsFramework1 = window.JsFramework1 || {}; 3 JsFramework1.loadMethod1 = function () { 4 alert("loadMethod1"); 5 }; 6 JsFramew

JS定义命名空间

var Common = Common || {}; Common.defineNS = function (nsString) { var parts = nsString.split('.'), parent = Common, i; if (parts[0] === "Common") { parts = parts.slice(1); } for (i = 0; i < parts.length; i++) { if (typeof parent[parts[i]] ==

js命名空间

JS多级命名空间 JavaScript不像C#或Java,有专门的namespace和package语法支持,当JS复杂到一定程度,尤其是引用大量的第三方JS框架和类库之后,命名冲突就会成为一个严重的问题,因此使用JS自己的变通方式建立命名空间很重要. 最简单的实现命名空间的方法,代码示例如下: //这是伪代码,: var com;     if(!com) com = {}; //第一级域名     com.ModuleClass = {}; //第二级域名     com.ModuleCla

JS命名空间模式解析

简介 在SF上看到这样一个提问: 如题,因为不得已的原因,需要写若干个全局函数.但又不想这样: window.a = function(){} window.b = function(){} window.c = function(){} 题主问有什么好的写法? 解答: 如果你用 jQuery,你可以这样写 $.extend(window, { a: function() {}, b: function() {}, c: function() {} }); 如果你不用 jQuery,可以直接实现

js命名空间的玩法详解

1.首先为什么要用js命名空间          在我们的项目中,如果多个人为同一个页面写js的话,命名冲突就有可能发生,如果所有的函数都是全局的话,如下: a.js中 function com() {   ..... } b.js中 function com() {     ........ } 且一个页面同时引用了这两个js文件,这样我们调用的时候会出问题,可能老是调用到第一个文件里面的函数了,我之前在做一个项目的时候就碰到了这个问题,我自己b.js文件中ajax的响应函数的名字和a.js文

JS模块化历程

这是一篇关于js模块化历程的长长的流水账,记录js模块化思想的诞生与变迁,展望ES6模块化标准的未来.经历过这段历史的人或许会感到沧桑,没经历过的人也应该知道这段历史. 一.无模块时代 在ajax还未提出之前,JS还主要用来在网页上进行表单校验.实现简单的动画效果等等,你可以回想一下那个网页上到处有公告块飘来飘去的时代. 这个时候并没有前端工程师,服务端工程师只需在页面上随便写写js就能搞定需求.那个时候的前端代码大概像这样: if(xx){ //....... } else{ //xxxxxx