保存内存时的javascript继承

时间:2011-10-04 15:17:16

标签: javascript memory-leaks prototypal-inheritance

对不起,如果这是旧主题的转贴,但我确实搜索过,并且找不到类似的帖子。

以下这段代码是一个如何在我正在做的项目中进行javascript继承的示例,现在很遗憾,大多数最终用户都处于非常低内存的winXP + EI7设置中,所以我希望节省每一点我能记住的记忆。

现在我的问题是:我实际上是通过在构造函数的末尾设置params = null来保存任何内存,并且在我将window.namespace.MyClass.MySubclass指针分配给我之后,我应该对MyClass指针做同样的事情吗?相同的价值?

(function (window, undefined) {

    var MySubClass = function (params) {

        this.elements = {
            // jQuery dom elements
        };

        this.vars = {
           // vars
        };

        this.controls = {
            // class instances
        };

        this.init(params);
        params = null; // cleanup
    };

    MySubClass.prototype = new namespace.MyClass.Base();

    MySubClass.prototype.init = function (params) {

        // do stuff

        params = null; // cleanup
    };


    MySubClass.prototype.add = function (item) {
        // adds item to an internal collection
    };

    window.namespace.MyClass.MySubClass = MySubClass;

})(window);

2 个答案:

答案 0 :(得分:0)

我很确定你没有 - 无论如何,变量超出了函数末尾的范围。当然,如果某人已经客观地对此进行了测试,那么欢迎任何确认或驳斥。

聚苯乙烯。另外,引用Donald Knuth:premature optimization is the root of all evil.即使你使用的技巧确实有一些影响,但几乎肯定不值得。

答案 1 :(得分:0)

设置params = null可能不会产生巨大的差异,但这不是一个糟糕的做法。

您可以使用提到的here工具来查找/清除内存泄漏。