JavaScript静态对象创建方法的差异

时间:2013-07-25 14:19:34

标签: javascript static static-members object-literal

我是一名尝试学习JavaScript精神的Java开发人员。

这两种在JavaScript中创建静态对象的方法是否有任何非语法方式?从JavaScript程序员的角度来看,哪种方法更容易接受?

方法A:

var obj = {};
obj.field1 = /* some expression */;
obj.field2 = /* some expression */;

方法B:

var obj = {
    field1: /* some expression */,
    field2: /* some expression */
};

1 个答案:

答案 0 :(得分:1)

我相信这两个对象最终都是以类似的方式创建的,并且性能的差异(如果有的话)会很小到你不应该注意到差异的程度。

但这不是普遍的。在创建数组时,使用类似于B的方法更有效。这是因为(至少在V8中)分配具有设置大小的数组更有效,因为它知道数组的大小。

// Here V8 can see that you want a 4-element array containing numbers:
var a = [1, 2, 3, 4];

// Don't do this:
a = []; // Here V8 knows nothing about the array
for(var i = 1; i <= 4; i++) {
    a.push(i);
}

来源:Smashing Magazine

我建议尝试Chrome Profiling Tools,看看你是否能注意到两种方法的效率之间存在差异,虽然我认为如果存在差异,它会太小而无法发挥作用。

此外,如果您不熟悉JavaScript,我建议您查看由AirBnB创建的精彩JavaScript style guide。编写高效,干净的JavaScript有很多很棒的技巧。