我是一個JavaScript語言開發人員,而不是通過使用jQuery按鈕單擊AJAX獲取數據。Javascript中的C#名稱空間機制
來自C#背景我沒有看到在Javascript中使用名稱空間的直接方法。我試圖用下面的代碼來模仿它。我的問題與using(namespace);
方法有關,它將所有從命名空間對象複製到窗口對象。在搜索如何以模塊化方式處理javascript時,我還沒有遇到過這樣的編碼,我想知道以下幾點:1)這個模式是否有名字? 2)using(namespace);
有什麼優點和缺點?
console.clear();
var System = {
IO: {
OutletOption: {
Console: 1,
MessageBox: 2
},
Outlet: function Outlet(outletOption) {
var _self = this;
var _outletOption = outletOption;
//private
_self.log = function(txt) {
console.log(txt);
};
_self.messageBox = function(txt) {
alert(txt);
};
//public
_self.out = function(txt) {
switch (_outletOption) {
case System.IO.OutletOption.MessageBox:
_self.messageBox(txt);
break;
case System.IO.OutletOption.Console:
_self.log(txt);
break;
}
};
return {
out: _self.out
};
}
}
};
function using(namespace, scope) {
console.log(scope);
for (var key in namespace) {
scope[key] = namespace[key];
}
}
(function() {
function execute() {
//All your code goes here
using(System.IO, this);
var o = new this.Outlet(this.OutletOption.Console);
o.out("Some test text.");
};
return {
execute: execute
};
})().execute();
我建議你使用像Angularjs這樣的框架,以便在模塊化方面有一個更好的方法。 – PhiceDev
您的'using()'函數會污染全局*名稱空間*,並且很可能導致衝突,這就是名稱空間應該阻止開始的類型。您可以使用嵌套對象和JavaScript來模擬名稱空間,Javascript有一個'with'關鍵字來設置一個隱式名稱空間,但是它被棄用,因爲它有各種各樣的問題。 –
@MikaelLennholm它污染的好處!謝謝。 –