Какой из них лучше выполняет функцию или объект в Javascript / Jquery? - PullRequest
0 голосов
/ 09 мая 2011
//Object approach
$.myutils = {
    addNumbers : function(a,b){
        //assuming a and b are integers for simplicity
        return a + b;
    }
    subNumbers : function (a,b){
        //assuming a and b are integers for simplicity
        return a - b;
    }
};
//Usage
$.myutils.addNumbers(20,10);
$.myutils.subNumbers(20,10);

//function approach
$.myutils = function()
{
    return {
        addNumbers : _addNumbers,
        subNumbers : _subNumbers
    };
    _addNumbers : function(a,b){
        //assuming a and b are integers for simplicity
        return a + b;
    }
    _subNumbers : function (a,b){
        //assuming a and b are integers for simplicity
        return a - b;
    }   
}
//Usage
$.myutils().addNumbers(20,10);
$.myutils().subNumbers(20,10);

Ответы [ 2 ]

2 голосов
/ 09 мая 2011

Хотя это можно * считать случаем преждевременной оптимизации, рассмотрим случай, когда семантика отличается , и первый метод, вероятно, предпочтителен (так как не сохранено дополнительное состояние) .

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

Второй метод «functions» будет «медленнее» (для некоторого значения «slower»), потому что каждый раз, когда выполняется myutils функция (но помните, что функции также являются объектами), которую она возвращает новый объект , который имеет новые функции в качестве свойств. Таким образом, по определению это должно сделать больше работы. (Кроме того, второй метод не будет запускаться как есть, я перевел его на «рабочий код» в моей голове.)

Удачного кодирования.


Следуя комментарию zerkms, я добавил тестовый пример jsperf: http://jsperf.com/5931661 (он также включает в себя соответствующие исправления ошибок; оба «примера» фактически были испорчены).

0 голосов
/ 09 мая 2011

Краткий ответ: объект быстрее.

Ваша функция возвращает объект - почему он будет быстрее, чем прямой объект ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...