首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >隐藏类和{}对象与自定义构造函数(v8)之间的等价性

隐藏类和{}对象与自定义构造函数(v8)之间的等价性
EN

Stack Overflow用户
提问于 2018-02-21 22:31:21
回答 1查看 81关注 0票数 2

鉴于这一条:

http://richardartoul.github.io/jekyll/update/2015/04/26/hidden-classes.html

如果创建构造函数,如:

代码语言:javascript
运行
复制
function Point(x,y) {
  this.x = x;
  this.y = y;
}

然后这样做:

代码语言:javascript
运行
复制
var obj1 = new Point(1,2);
var obj2 = new Point(3,4);

obj1.a = 5;
obj1.b = 10;

obj2.b = 10;
obj2.a = 5;

意味着您在幕后得到了某种性能优化。

不过,我在想,如果你只是这样做:

代码语言:javascript
运行
复制
var obj1 = { a: 5, b: 10 }
var obj2 = { b: 10, a: 5 }

如果您对数千个对象遵循这种模式,或者是为每个var objn实例创建一个新的隐藏类,您会得到相同的性能优化吗?

基本上不知道是否需要使用构造函数来获得性能优化。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-21 22:37:54

正如这篇文章在总结中所说:

始终以相同的顺序实例化对象属性,以便共享隐藏类以及随后优化的代码。

在您的替代示例var obj1 = { a: 5, b: 10 }; var obj2 = { b: 10, a: 5 }中,这些属性显然没有按照相同的顺序添加,因此隐藏的类不能共享。

您不必使用构造函数本身,但使用构造函数是确保获得所需性能的最简单方法。(这也被普遍认为是符合人体工程学和良好编码的做法。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48916642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档