JS實現命名空間

2021-08-27 06:24:20 字數 1178 閱讀 7833

作者 : 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 是乙個在靜態語言中常見的概念。它可以幫助我們更好地整理 並可避免命名衝突。舉乙個簡單的例子,如果有兩個人都叫小明,我們很難區分和引用這兩個人。但如果我們在他們前面加上命名空間,比如 北京的小明和上海的小明,那麼區分起來就容易的多了,也不會因為重...