鉴于这一条:
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
实例创建一个新的隐藏类,您会得到相同的性能优化吗?
基本上不知道是否需要使用构造函数来获得性能优化。
发布于 2018-02-21 22:37:54
正如这篇文章在总结中所说:
始终以相同的顺序实例化对象属性,以便共享隐藏类以及随后优化的代码。
在您的替代示例var obj1 = { a: 5, b: 10 }; var obj2 = { b: 10, a: 5 }
中,这些属性显然没有按照相同的顺序添加,因此隐藏的类不能共享。
您不必使用构造函数本身,但使用构造函数是确保获得所需性能的最简单方法。(这也被普遍认为是符合人体工程学和良好编码的做法。)
https://stackoverflow.com/questions/48916642
复制相似问题