问题
与自实例化的构造函数相比,使用对象文字是否有性能优势?
例子
对象字面量:
var foo = {
//...
};
自实例化构造函数:
var foo = new function () {
//...
};
最佳答案
是的(对象字面量会更快),但它们在实现上有细微的不同1并且代表不同的目标。构造函数形式“必须做更多的事情”,而文字形式也可以进行更高程度的优化——它是一个定义(对一组尚未固定的属性),而不是一系列语句。
尽管 micro-benchmark (这很有趣,谢谢 Arun!)可能会显示一个“慢得多”,这在实际程序中并不重要2,因为在任一构造中花费的相对时间量接近于零。
1 使用构造函数时a prototype must be introduced .对象字面量不是这种情况,因为它具有固定链行为。
Every object created by a constructor has an implicit reference (called the object’s prototype) to the value of its constructor’s “prototype” property.
其他开销工作包括创建新的执行上下文、复制其他属性,甚至检查返回值。 (在发布的案例中,它还必须创建一个新的一次性函数对象,然后才能将 is 作为构造函数使用,它本身添加了一些 additional overhead)。
2 我确信有反例。但对于此类情况,我只能希望该问题已通过识别和消除的所有其他瓶颈进行彻底的基准测试。
关于javascript - 与自实例化的构造函数相比,使用对象文字是否有性能优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18199024/