2012-05-22 4 views
0

Я пытаюсь решить следующие способы написания модуля JS. Каковы последствия написания модуля памяти и процессора. Будет ли второй занят больше памяти в браузере?Объявление модуля Javascript - производительность

Использование объявления функции

function MyModule() { 
    this.getOperation1 = operation1; 
    function operation1() { 
     return "XYZ" 
    } 
} 

Использования определения переменного

var MyModule = { 
    getOperation1: function() { 
     return "XYZ" 
    } 
    } 
+0

возможно дубликат [объектно-ориентированного Javascript лучших практик?] (Http://stackoverflow.com/questions/907225/object-oriented-javascript-best-practices) – antyrat

+0

Я просмотрел поток, он не охватывает проблему памяти/процессора. – tech20nn

+0

Что вы пытаетесь достичь в конце? – Tamil

ответ

1

Памяти мудрых они о такие же, - как создать один объект.

Однако:

  1. Вы можете использовать только new с функцией на основе формата модуля. Последний создает только один объект, а не конструктор, который можно использовать для создания дополнительных экземпляров.

  2. С помощью функции вы можете заключать частные локальные переменные в область видимости.

Однако в наиболее случаях лучший подход заключается в следующем:

function MyModule() { 
} 

MyModule.prototype.getOperation1 = function() { 
    ... 
} 

, который гарантирует, что при создании нескольких экземпляров они все только доля один копию функции getOperation1.

При этом, если все, что вы пытаетесь сделать, это пространство имен функций, и они, естественно, не образуют «объект» (в смысле ООП), тогда вы можете просто использовать синтаксис литерала объекта.

1

См этого yui-blog для памяти связанных аргументов

Из того же

с помощью нового для вызова функции, объект держит на негодный объект прототипа. это отходы память без каких-либо компенсирующих преимуществ. Если мы не используем новые, мы не храним впустую прототип объекта в цепи

Как отметили @Alnitak использовать prototype объекта упаковывает вы до реализации constructor функции так, что все экземпляры были бы совместно использовать один и тот же объект.

Для проверки процессора [скорость] используйте www.jsperf.com и выполните тест производительности. Некоторые уже имеющиеся тесты Function Invocation, Object.create vs new, Generic

Смежные вопросы