鉴于这篇文章:
http://richardartoul.github.io/jekyll/update/2015/04/26/hidden-classes.html
如果您创建一个构造函数,例如:
function Point(x,y) {
this.x = x;
this.y = y;
}
然后这样做:
var obj1 = new Point(1,2);
var obj2 = new Point(3,4);
obj1.a = 5;
obj1.b = 10;
obj2.b = 10;
obj2.a = 5;
意味着您可以获得某种性能优化。
我想知道,如果你只是这样做:
var obj1 = { a: 5, b: 10 }
var obj2 = { b: 10, a: 5 }
如果您为数千个对象遵循该模式,您是否会获得相同的性能优化,或者是为每个var objn
实例创建的新隐藏类。
基本上想知道是否需要使用构造函数来进行性能优化。
答案 0 :(得分:2)
正如文章在摘要中所说:
始终以相同的顺序实例化对象属性,以便可以共享隐藏的类和随后优化的代码。
在您的替代示例var obj1 = { a: 5, b: 10 }; var obj2 = { b: 10, a: 5 }
中,属性显然不会以相同的顺序添加,因此无法共享隐藏的类。
您不必使用构造函数本身,但使用构造函数是确保您获得所需性能的最简单方法。 (它通常也被认为是符合人体工程学和良好的编码实践。)