3

我有很多以下课程:

(function() {
   if (!window.Administration) {
     window.Administration = {};
   }
   window.Administration.Customers = (function() {
      // some code and private methods
      return {
      // public methods
      };
   })();
})();

我在某处听说这样的公共方法声明不太好,因为 js 引擎创建的公共方法实例与您从代码中调用它们的次数一样多……这是真的吗?

在这种情况下,我如何重构我的代码以解决此类内存泄漏但保留自执行功能?

谢谢

4

1 回答 1

0

如果您只担心隐藏方法,则可以使用此构造:

(function(ns) {

    // default constructor
    ns.Blah = function(v) {
        this.v = v;
        setup.call(this); // invoke private method
    }

    // private method, invoked using .call(this)
    function setup()
    {
        this.w = this.v + 123;
    }

    function myhello()
    {
        return 'w = ' + this.w + ' and v = ' + this.v;
    }

    ns.Blah.prototype = {
        hello: function() {
            return myhello.call(this);
        }
    };

}(window.MYNS = window.MYNS || {});
于 2013-05-08T13:25:14.083 回答