作者 : zhanhailiang 日期 : 2012-10-24在新增乙個屬性或者建立乙個命名空間之前,最好是首先檢查它是否已經存在,如下例:
if
(typeof hwsl ===
"undefined");
}//或者使用||的短路功能
var hwsl = hwsl ||
;
但是這些附加的檢查會迅速產生大量重複的**。如果想定義hwsl.custom.module2,需要構造三次檢查,每次檢查都要針對定義的乙個物件或者屬性。所以需要乙個可以很方便地處理命名空間細節的可重用函式(稱之為通用命名空間函式)。定為namespace()並加以使用:
// 使用命名空間函式
hwsl.namespace
("hwsl.custom.module2");
// 相當於如下**
var hwsl =}}
;
接下來是乙個命名空間函式的實現示例,這個實現是非破壞性的,即若已經存在乙個命名空間,便不會再重新建立它。
var hwsl = hwsl ||
;// 使用方法
// 1 var module2 = hwsl.namespace("hwsl.custom.module2");
// module2 === hwsl.custom.module2; // true;
// 2 hwsl.namespace("hwsl.custom.module51");
hwsl.namespace
=function
(nsstring)
for(i =
0; i < parts.length
; i++);
} parent = parent[parts[i]];
}return parent;};
//測試用例
"hwsl.custom.module2");
//var module2 = hwsl.namespace("hwsl.custom.module2");
=== hwsl.custom.module2); // 輸出 true;
"custom.module51"); // 忽略前面的hwsl
JS命名空間
命名空間namespace 某些語言中叫package 是乙個在靜態語言中常見的概念。它可以幫助我們更好地整理 並可避免命名衝突。舉乙個簡單的例子,如果有兩個人都叫小明,我們很難區分和引用這兩個人。但如果我們在他們前面加上命名空間,比如 北京的小明和上海的小明,那麼區分起來就容易的多了,也不會因為重...
JS命名空間with
眾所周知乙個頁面可能會被很多人開發,那麼這時候就有乙個問題,那就是命名的重複 變數,函式名 所以為了解決這個問題,命名空間就應用而生了。可以先看如下 var org jerry groupb org.groupa.jerry.name那麼此時可以發現,如果要使用某個變數,那麼要層層呼叫,但是這回很麻...
JS命名空間(namespace)
命名空間namespace 某些語言中叫package 是乙個在靜態語言中常見的概念。它可以幫助我們更好地整理 並可避免命名衝突。舉乙個簡單的例子,如果有兩個人都叫小明,我們很難區分和引用這兩個人。但如果我們在他們前面加上命名空間,比如 北京的小明和上海的小明,那麼區分起來就容易的多了,也不會因為重...