//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);
答案 0 :(得分:2)
虽然可以被认为是过早优化的情况,但考虑语义不同的情况,并且第一种方法可能是首选的(因为没有其他状态)存储的)。
无论如何,第一个“对象”方法是“更快”(对于某些“更快”的值),因为相同的函数是同一个对象的属性是调用
第二个“函数”方法将“慢”(某些值为“慢”),因为每次执行myutils
函数(但请记住,函数也是对象) )它返回一个新对象,它具有新功能作为属性。因此,按照定义,必须做更多的工作。 (另外,第二种方法不会按原样运行,我把它翻译成“工作代码”。)
快乐的编码。
根据zerkms的评论,我添加了一个jsperf测试用例:http://jsperf.com/5931661(它还包括适当的错误修复;两个“示例”实际上都被破坏了。)
答案 1 :(得分:0)
简短回答:对象更快。
你的函数返回一个对象 - 为什么它会比直接对象更快?