我是一名尝试学习JavaScript精神的Java开发人员。
这两种在JavaScript中创建静态对象的方法是否有任何非语法方式?从JavaScript程序员的角度来看,哪种方法更容易接受?
方法A:
var obj = {};
obj.field1 = /* some expression */;
obj.field2 = /* some expression */;
方法B:
var obj = {
field1: /* some expression */,
field2: /* some expression */
};
答案 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);
}
我建议尝试Chrome Profiling Tools,看看你是否能注意到两种方法的效率之间存在差异,虽然我认为如果存在差异,它会太小而无法发挥作用。
此外,如果您不熟悉JavaScript,我建议您查看由AirBnB创建的精彩JavaScript style guide。编写高效,干净的JavaScript有很多很棒的技巧。