对象方法比全局函数更快吗?

Ben*_*rey 7 javascript oop optimization jquery

问题

不敢相信我在网上找不到任何东西,也许我在寻找错误的东西......

可能几乎没有差异,但是当我尽可能地优化我的代码时,我觉得值得一提.

很简单,我想知道在对象中定义和运行方法是否比在全局定义和运行函数更快.

例子

考虑一下:

(function($){  
    $.fn.test = function() {  
        // do something here
    };  
})(jQuery);
Run Code Online (Sandbox Code Playgroud)

还有这个:

function test(){
    // do something here
}
Run Code Online (Sandbox Code Playgroud)

我的问题

以上哪个更快,为什么?如果速度没有差异那么你建议使用哪个?

提前致谢

更新1

因为它可能是相关的,我觉得有必要解释我为什么要问这个问题.我有一个多年来写的库,里面包含各种各样的函数.由于它们有这么多,我想知道如果我要扩展jQuery对象它们是否会运行得更快,或者保持它们原样?

Rob*_*obG 6

理论上,您只需要计算必须搜索的对象数量,以确定哪个更快.变量是针对作用域链解析的,脚本引擎必须首先搜索函数的执行上下文,然后是外部上下文,最后是全局上下文.

属性解析必须首先找到作用域链上的对象,然后是对象或其[[Prototype]]链上的属性.

但实际上,编译器优化意味着上述简单分析会在正确的情况下出错,并且在不同的浏览器中针对不同的情况提供不同的结果.

通常,这种优化会在性能上产生微小的变化,因此不应仅仅考虑性能原因.为您的应用程序架构,易于维护和逻辑分组提供任何有意义的设计对象和方法.