js模擬實現名稱空間簡單介紹

antzone發表於2017-04-06

如果對於C#或者java等語言比較熟悉,那麼名稱空間這個概念就自然不會陌生。

它的作用非常的巨大,可以有效的對程式碼進行分組,可以避免命名衝突的功能,但是當前的javascript版本並沒有名稱空間這個概念,但是我們可以模擬實現,下面就對此做一下簡單介紹,需要的朋友可以做一下參考。

如果要建立一個 JavaScript 庫,則可以將它們包裝在名稱空間內,而不需要定義全域性函式和類,如下所示:

[JavaScript] 純文字檢視 複製程式碼
var MSDNMagNS = {};
MSDNMagNS.Pet = function(name) { // code here };
MSDNMagNS.Pet.prototype.toString = function() { // code };
var pet = new MSDNMagNS.Pet(“Yammer”);

名稱空間的一個級別可能不是唯一的,因此可以建立巢狀的名稱空間:

[JavaScript] 純文字檢視 複製程式碼
var MSDNMagNS = {};
// nested namespace “Examples”
MSDNMagNS.Examples = {};
MSDNMagNS.Examples.Pet = function(name) { // code };
MSDNMagNS.Examples.Pet.prototype.toString = function() { // code };
var pet = new MSDNMagNS.Examples.Pet(“Yammer”);

可以想象,鍵入這些冗長的巢狀名稱空間會讓人很累。 幸運的是,庫使用者可以很容易地為名稱空間指定更短的別名:

[JavaScript] 純文字檢視 複製程式碼
// MSDNMagNS.Examples and Pet definition...
// think “using Eg = MSDNMagNS.Examples;”
var Eg = MSDNMagNS.Examples;
var pet = new Eg.Pet(“Yammer”);
alert(pet);

相關文章