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

JavaScript-JS命名空间的构造和实现-[web前端开发]

2013-12-17 22:44 916 查看
所谓命名空间,就是通过 com.proj.common.dosomething 这样的形式使用和访问脚本。

为什么要这样做?

1。项目很大,应用程序繁杂,使用长路径清晰,容易理解,分门别类;

2。可以方法重名,比如你的项目里可能很多 showABC() 这样的方法,是不是很乱?

使用命名空间 com.proj.a.showABC() 和 com.proj.b.showABC() 就会区分开来;

3。可以将javascript按 包的形式封装起来,和我们 JAVA web 项目里的分层管理趋于一致;

4。有利于代码更新,升级和维护。

命名空间的构造:

/**
* 命名空间的创建
* 支持 xxx.xxx.xxx命名访问
*
*
*/
function NamespacesPrototype() {

function access(c, d, e) {
c[d] = e;
e._path = c._path ? (c._path + "." + d) : d;
e._parent = c;
}
function make(d, f, c) {
var e = f.shift();
if (0 == f.length) {
access(d, e, c());
} else {
if (!d[e]) {
access(d, e, {});
}
make(d[e], f, c);
}
}

this.create = function (nameString, custfun) {
make(window, nameString.split("."), function () {
return new custfun();
});
};
this.register = function (nameString, custfun) {
make(window, nameString.split("."), function () {
return custfun;
});
};
};
/**
* 创建命名空间
*/
var Namespaces;
if (!Namespaces) {
Namespaces = new NamespacesPrototype();
};
//命名空间的自定义
Namespaces.create("com.proj.common", function () {

this.a= 'This is my code';
this.b = function (){
// your method
alert('my method-' + this.a);
};
//TODO orthers code here.
});
//使用
...
com.proj.common.b(); // output 'my method-This is my code'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: