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

标签 javascript performance object properties

我对 JavaScript 有点陌生。我已经在客户端到处使用它一段时间了,但现在我正在探索服务器端 Javascript。这个问题是关于 Javascript 对象的,关于它们的创建和它们属性的有效定义。

我已经(多次)看到以 var o = {}; 创建对象现在优于 var o = new Object(); 以提高性能原因。向对象添加属性的方式在性能上是否存在差异?

例如,这种情况在性能上有什么区别吗:

var o = {
  thing1: "yardigooven",
  thing2: "goovenyardi",
};

还有这种情况?

var o = {};
o.thing1 = "yardigooven";
o.thing2 = "goovenyardi";

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

谢谢。

最佳答案

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

现在谈谈使用对象字面量而不是在其后添加属性的性能。哪个最快?答案是,我们不在乎,您也不应该在乎。 如果在性能上存在差异,它会非常小,永远不会产生影响,即使您一次创建 100 万个对象,这种情况也不太可能发生。

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

为了完整起见,here is a test I ran on jsperf .在我的浏览器 Chrome 15 中,对象字面量初始化速度提高了 53%。哇,53%,很大吧?除非您将鼠标放在初始化后使用属性的测试的工具提示上,否则您会看到类似的内容

Ran 681,285 times in 0.077 seconds.

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

关于javascript - 在 JavaScript 中,哪种创建具有属性的对象的方法最有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8387615/

相关文章:

javascript - 如何让我的 JavaScript 程序运行得更快?

javascript - 如何判断哪个键在javascript中调用了一个函数

javascript - Chrome开发工具: find which script fired JS event/error

PHP 中使用 Switch 的 JavaScript 脚本

javascript - 使用额外的方法和语法糖扩展 Javascript 数组

mysql - 提高 InnoDB count(*) 性能

java - 垃圾收集器销毁对象后删除文件

javascript - 我可以在 Javascript for...in 和 for...of 循环中使用 continue 和 break 吗?

c++ - 我是否正确删除了指向对象的指针 vector ?

c# - 通过 url 性质控制内容的显示 - MVC/HTML/ASP/JS