2

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

下面这段代码是我如何在我正在做的项目中进行 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);
4

2 回答 2

0

我很确定你不会——无论如何,变量在函数末尾都会超出范围。当然,如果有人对此进行了客观的实际测试,任何确认或反驳都将受到欢迎。

附言。另外,引用 Donald Knuth 的话:过早优化是万恶之源。 即使您使用的技巧确实有一些效果,也几乎肯定不值得。

于 2011-10-04T15:26:59.767 回答
0

设置 params = null 可能不会有很大的不同,但不是一个坏习惯。

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

于 2011-10-04T15:27:33.117 回答