您的位置:首页 > Web前端 > JavaScript

为js对象创建命名空间

2015-02-07 14:52 176 查看
js对象有一种创建方式,类似于json数据,格式如下:

var obj = {

name : 'feng',

age:23,

say:function() {

//................

}

}

但是对于一个js框架书写用这种方式不利于为不同的功能进行区分。能不能像c#那样创建命名空间呢?

例如:

myLib.dd = {

test : function() {

alert("sxsx");

}

}

myLib.mm = {

test : function() {

alert("sxsx");

}

}

能否:myLib.dd.test(); 或者 myLib.mm.test() 就能调用了?

答案是肯定了:

只需要在上面书写这么一个js就可以:

var <span style="color:#ff6666;">myLib</span>={
			//创建子命名空间,用的是yui的方法------
			NS:function(ns) {
		   if (!ns || !ns.length) {
			   return null;
		   }
		   var levels = ns.split(".");
		   var nsobj = <span style="color:#ff9966;">myLib</span>;
		   for (var i=(levels[0] == "<span style="color:#ff9966;">myLib</span>") ? 1 : 0; i<levels.length; ++i) {
			 nsobj[levels[i]] = nsobj[levels[i]] || {};
			 nsobj = nsobj[levels[i]];
		   }
		   return nsobj;
		}
	}

注意:这里的myLib要和下面定义的xxx.NS要相同,用粉红色着重打印的要一致!!!

则:

myLib.NS("dd");

myLib.dd = {

test : function() {

alert("sxsx");

}

}

myLib.NS("mm");

myLib.mm = {

test : function() {

alert("sxsx");

}

}

即可········································
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: