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");
test : function() {
alert("sxsx");
}
}
即可········································