哪一个在Javascript / Jquery中的功能或对象表现更好?

时间:2011-05-09 01:39:59

标签: jquery performance function object

//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 个答案:

答案 0 :(得分:2)

虽然可以被认为是过早优化的情况,但考虑语义不同的情况,并且第一种方法可能是首选的(因为没有其他状态)存储的)。

无论如何,第一个“对象”方法是“更快”(对于某些“更快”的值),因为相同的函数同一个对象的属性是调用

第二个“函数”方法将“慢”(某些值为“慢”),因为每次执行myutils函数(但请记住,函数也是对象) )它返回一个新对象,它具有新功能作为属性。因此,按照定义,必须做更多的工作。 (另外,第二种方法不会按原样运行,我把它翻译成“工作代码”。)

快乐的编码。


根据zerkms的评论,我添加了一个jsperf测试用例:http://jsperf.com/5931661(它还包括适当的错误修复;两个“示例”实际上都被破坏了。)

答案 1 :(得分:0)

简短回答:对象更快。

你的函数返回一个对象 - 为什么它会比直接对象更快?