最有效的javascript方法声明

时间:2010-07-20 07:39:19

标签: javascript performance

在编写javascript时,可以用3种不同的方式定义方法。

1]全局命名空间中的函数

function doSomething();

2]作为函数

的成员的函数
function Clazz() {}
Clazz.doSomething = function(){};

3]是函数实例

的函数
function Clazz() {}
Clazz.prototype.doSomething = function(){};

根据代码组织,可以选择上述方法之一而不是其他方法。

但纯粹从性能角度来看这是最有效的吗? (特别是1到2之间)

如果doSomething有参数,你的答案会不同吗?

4 个答案:

答案 0 :(得分:2)

从纯粹的性能POV中,1应该是最快的。原因是它需要较少的工作来设置范围链&执行上下文。此外,如果您从函数中访问任何全局变量,则分辨率将以1加速,同样仅仅因为作用域链的深度。 作为一般规则,进一步向上(接近全局)对象在范围内,它越快。出于同样的原因,访问属性a.b将比访问a.b.c

更快

在简单的函数调用的情况下,性能增益可能不会太大,但是如果你将函数称为循环,它可能会挂载。

答案 1 :(得分:1)

这些声明中没有一个做同样的事情而且不可互换,你期望进行什么样的比较?这就像询问实例化10个变量或具有10个项目的数组是否更快:一个是最快的,但结果却不一样。

答案 2 :(得分:0)

您无法比较函数声明之间的性能

例如,在所有3个地方声明的 add(a,b)函数提供相同的性能。性能对您编写代码的方式很重要,而不是您声明函数的位置......

答案 3 :(得分:0)

你错过了最优化的一个:

var x = function(){}

当javascript看到定义时:

function x(){}

然后将其转换为前一种形式。如果你首先这样做,那么加速可以忽略不计。但是为了回答你的问题,这是最优化的。