наследование JavaScript при сохранении памяти - PullRequest
2 голосов
/ 04 октября 2011

Извините, если это репост старой темы, но я выполнил поиск и не смог найти похожий пост.

этот фрагмент кода является примером того, как я делаю наследование JavaScript в проектея делаю, к счастью, большинство конечных пользователей используют очень мало памяти winXP + EI7, поэтому я стараюсь сохранить каждый бит памяти, который могу.

теперь мой вопрос:на самом деле сохранить любую память, установив params = null в конце конструктора, и я должен сделать то же самое с указателем MyClass после того, как я назначил указатель window.namespace.MyClass.MySubclass тому же значению?

(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 голосов
/ 04 октября 2011

Установка параметров = ноль, вероятно, не будет иметь большого значения, но это не плохая практика.

Вы можете использовать упомянутые инструменты здесь для поиска / устранения утечек памяти.

0 голосов
/ 04 октября 2011

Я вполне уверен, что вы не & mdash; в любом случае переменная выходит из области видимости в конце функции. Конечно, если кто-то действительно проверял это объективно, любое подтверждение или опровержение будет приветствоваться.

Ps. Кроме того, цитируя Дональда Кнута: преждевременная оптимизация - корень всего зла. Даже если использованный трюк имел какой-то эффект, он почти наверняка не стоил бы этого.

...