如何封装(和命名空间)现有的大javascript文件而不修改它?

时间:2014-09-24 12:26:55

标签: javascript wsdl cxf

摘要

我有一个巨大的JS文件,它具有旧式函数和变量定义:它将所有内容放在全局范围内。我希望能够导入'该文件位于'名称空间'所以全球范围保持良好和干净。

详细

'庞大的文件'是由Apache CXF的WSDL2JS工具生成的Web服务客户端。它将数百个函数和变量放到全局范围内,有一个小的sample of that file on pastebin。我想继续使用该工具,但将生成的JS保留在某种命名空间或单独的范围内。是否可以使用某些工具或最少的人工干预?

样品

WSDL2JS中的代码包含在自调用函数中,实际上不起作用。 可以在http://jsfiddle.net/rozboris/26t5nwmx/

上进行测试和编辑
var testModule = (function(){
  //here starts the generated code that I don't want to touch
  function priv(){
    console.log('called private function');
  }

  function proto(){
    this.something = 'hello';
  }

  priv.prototype = new proto;
  //here ends the generated code that I don't want to touch

  return {
    priv: priv
  }

})();

testModule.priv.something; //undefined

附带问题

是否有更好的工具可以使用JS(在浏览器中)基于wsdl的Web服务?是否有Apache CXF的WSDL2JS的替代品?

提前致谢。

1 个答案:

答案 0 :(得分:1)

你需要从外面调用它的功能吗?如果没有,只需将现有代码封装在immediately evaluated function expression

(function(){
    //code goes here
}());

并在每个全局声明的前面添加'var'。