javascript命名空间的学习

由于JS库越来越庞大后,需要引用命名空间的方式,以免各引用js文件中的对象重名,在javascript中不像java,一些面向对象语言有包,命名空间。所以在javascript中需要用代码的方式对对象进行命名空间的注册。方便引用。

以下是整理的一种js命名空间的写法:

//声明Namespace
Namespace = new Object();
//根据传入的名字进行注册,以点号为分隔符,分别对其进行注册
Namespace.register = function(nsName){
	//将China.city,折开,对其分别进行注册
    var nsArr = nsName.split('.');
    var strEval = "";
    var strNS = "";
    for (var i = 0; i < nsArr.length; i++){
    	//还原点号,对China进行注册,对China.city进行注册
        if (i != 0){
        	strNS += ".";
        }
        strNS += nsArr[i];
        //将要执行注册的名称,叠加成字符串
        strEval += "if(typeof(" + strNS + ") == 'undefined' || !strNS){" + strNS + " = new Object();}"
    }
    //通过eval统一执行叠加的字符串
    if(strEval != ""){
    	eval(strEval);
    }
}

//注册命名空间
Namespace.register("China.city");
Namespace.register("China.railway");
Namespace.register("Province");

//类似java一样,China.city包下面创建info类
China.city.info = function(area, city){
    this.area = area;
    this.city = city;
}
//类似java一样,China.city包下面创建info类。并在info类下面创建query方法
China.city.info.prototype.query = function(){
    alert(this.area + " : " + this.city);
}
var cci = new China.city.info("西南", "成都");
cci.query();


China.railway.info = function(from, to, railway){
    this.from = from;
    this.to = to;
    this.railway = railway;
}
China.railway.info.prototype.query = function(){
    alert(this.railway + " : " + this.from + "--" + this.to);
}
var cri = new China.railway.info("北京","上海","京沪铁路");
cri.query();

//类似java一样,由于是split('.'),所以China也被注册了,可以直接在China包下面创建info类
China.info = function(area, name){
    this.area = area;
    this.name = name;
}
China.info.prototype.query = function(){
    alert(this.area + " : " + this.name);
}
var ci = new China.info("亚洲","中国");
ci.query();

//后面又注册了一个Province的包
Province.info = function(area, name){
    this.area = area;
    this.name = name;
}
Province.info.prototype.query = function(){
    alert(this.area + " : " + this.name);
}
var pi = new Province.info("西南","四川省");
pi.query();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值