JavaScript中的匿名命名空间有什么问题吗?

时间:2014-05-22 04:59:10

标签: javascript

我正在编写一些带有命名空间的代码来减少混乱,因为我认为也许我可以通过创建一个匿名命名空间来停止一起污染命名空间。我只是想确保这是有效的,而且我没有想到的隐藏的问题。

基本上,代码是这样的:

new function() {
   // bunch of private helper functions and variables
   // ...

   this.loadEventHandler = function()
   {
      // do load stuff
   };

   this.resizeEventHandler = function()
   {
      // do resize stuff
   };

   window.onload = this.loadEventHandler;
   window.onresize = this.resizeEventHandler;
};

我有什么不考虑的吗?这不会被垃圾收集器或其他东西取出,对吧?

1 个答案:

答案 0 :(得分:1)

你有什么工作,但更惯用,更干净的方法是使用IIFE - 立即调用函数表达式

上面的代码动态创建一个函数,并使用new调用它,这会导致创建一个新对象。该对象添加了loadEventHandlerresizeEventHandler,然后将其添加到全局对象中。然后该函数存在,释放所述对象以供将来的垃圾收集。

IIFE允许您进入,并将您想要的内容添加到全局对象中,而不会使所有私人帮助程序混乱,例如,而不会在此过程中创建任何无用的对象。

(function() {
   // bunch of private helper functions and variables
   // ...

   function loadEventHandler()
   {
      // do load stuff
   };

   function resizeEventHandler()
   {
      // do resize stuff
   };

   window.onload = loadEventHandler;
   window.onresize = resizeEventHandler;
})();
相关问题