在JavaScript中,哪种创建具有属性的对象的方法最有效?

Aej*_*jay 3 javascript performance properties object

我对JavaScript有点新意.我已经在客户端使用它一段时间了,但现在我冒险进入服务器端Javascript.这个问题是关于Javascript对象,关于它们的创建和它们的属性的有效定义.

我已经看过(好几次)创建一个对象,因为性能原因var o = {};现在更喜欢它var o = new Object();.在向对象添加属性方面的性能是否存在差异?

例如,这种情况之间的性能是否有任何差异:

var o = {
  thing1: "yardigooven",
  thing2: "goovenyardi",
};
Run Code Online (Sandbox Code Playgroud)

这种情况?:

var o = {};
o.thing1 = "yardigooven";
o.thing2 = "goovenyardi";
Run Code Online (Sandbox Code Playgroud)

我假设第一种情况是首选,但我想确保在以这种方式编写所有对象定义之前.

谢谢.

Ale*_*pin 11

首先,var o = {};var o = new Array();不一样.第一个初始化一个对象,第二个初始化一个数组.var o = {};并且var o = new Object();是等价的.

现在讲述使用对象文字而不是之后添加属性的性能.哪一个最快?答案是,我们不在乎,你也不应该.如果性能存在差异,即使您同时创建了100万个对象,它也将永远不会产生影响,这种情况不太可能发生.

这称为过早优化,是许多中级程序员的祸根.除非您开始遇到性能问题,否则不要担心优化任何事情.然后使用分析器检测瓶颈在哪里并解决它.只是担心制作你的应用程序.

为了完整起见,这是我在jsperf上运行的测试.在我的浏览器Chrome 15中,对象文字初始化速度提高了53%.哇,53%,这是巨大的权利吗?除非您将鼠标放在初始化后使用属性的测试的工具提示上,否则您会看到类似的内容

在0.077秒内跑681,285次.

您的数字可能会有所不同,但您可以观察到,任何标准都认为最慢的方法仍然非常快.我认为可以说两者都足够快,可以用于任何目的.只需使用您喜欢的那个.