我是一个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它污染的好处!谢谢。 –