项目中,我们经常这样写JS, function(){}; 但函数多了不好管理且容易冲突,我们可以使用如下的方法来定义命名空间。
1: Namespace = new Object();
2:
3: // 全局对象仅存在register函数,参数为名称空间全路径LB.MAP
4: Namespace.register = function(fullNameSpace) {
5: // 将命名空间按点分成几个部分,如LB.MAP
6: var nsArray = fullNameSpace.split('.');
7: var sEval = "";
8: var sNS = "";
9: for (var i = 0; i < nsArray.length; i++) {
10: if (i != 0) sNS += ".";
11: sNS += nsArray[i];
12: // 依次创建构造命名空间对象(假如不存在的话)
13: sEval += "if (typeof(" + sNS + ") == 'undefined') " + sNS + " = new Object();"
14: }
15: if (sEval != "") eval(sEval);
16: }
17:
18: // 注册命名空间LB.MAP, LB.UI
19: Namespace.register("LB.MAP");
20: Namespace.register("LB.UI");
21:
22: //声明类GoogleMap
23: LB.MAP.GoogleMap = function(zoom, center) {
24: this.zoom = zoom;
25: this.center = center;
26: }
27:
28: // GoogleMap类添加一个公共方法show()
29: LB.MAP.GoogleMap.prototype.Display = function() {
30: alert("google map zoom is"+ this.zoom+" and center is "+this.center);
31: }
32:
33: var map = new LB.MAP.GoogleMap("4X", 20.00);
34:
35: // 给对象上添加方法
36: map.MoveLeft = function() { alert("I move left"); };
37:
38: map.Display();
39: map.MoveLeft();
本文转自敏捷的水博客园博客,原文链接http://www.cnblogs.com/cnblogsfans/archive/2009/06/17/1505227.html如需转载请自行联系原作者
王德水