Javascript中的C#名称空间机制

时间:2017-09-01 12:03:58

标签: javascript module namespaces modularity

我是javascript的新手,使用该语言做的更多,而不是使用jQuery通过按钮点击通过AJAX获取数据。

来自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();

1 个答案:

答案 0 :(得分:0)

JavaScript没有名称空间。如果您来自C#,您会发现使用TypeScript和Angular2 +更容易。 TypeScript是带有类型的JavaScript。