js模擬實現名稱空間功能程式碼例項

antzone發表於2017-04-06

使用名稱空間可以有效的防止命名衝突,比如c#。

是一種非常實用的功能,但是javascript自身並沒有定義這樣的功能。

不過我們可以模擬實現,下面就通過程式碼例項做一下簡單介紹。

首先看一下個簡單程式碼例項:

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

上面的程式碼實現了簡單的名稱空間功能,原理其實非常的簡單,就是建立一個物件,然後將各種方法或者屬性作為此物件的屬性。

名稱空間也可以實現巢狀,程式碼如下:

[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("softwhy.com");

上面的程式碼實現了名稱空間的功能,不過還不夠完美,名字太繁瑣了,鍵入不夠方便。

不過我們可以給它取一個別名,程式碼如下:

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

相關文章