項目中,我們經常這樣寫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();