Reflect.ownKeys 和 Object.keys 都可以时,用哪一个性能高一些?

发布于 2022-09-11 16:25:48 字数 173 浏览 18 评论 0

换言之,底层是先获取 Reflect.ownKeys,再排除掉不可枚举的,从而得到 Object.keys 的结果的,

还是说可枚举属性的获取有特殊加速通道,而 Reflect.ownKeys 因为出现得晚、未经充分优化,所以更慢一些?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

森林迷了鹿 2022-09-18 16:25:48

run in chrome console:

var obj = {};
for(var i=0;i<10000;i++){obj[i] = i;obj[Symbol(i)] = i;} // add 10000 properties and 10000 symbol properties
// call the method 1000 times
console.time("Reflect.ownKeys");
for(var i=0;i<1000;i++){
  Reflect.ownKeys(obj);
}
console.timeEnd("Reflect.ownKeys");
// Reflect.ownKeys: 3666.298095703125ms

console.time("Object.getOwnPropertyNames");
for(var i=0;i<1000;i++){
  Object.getOwnPropertyNames(obj);
}
console.timeEnd("Object.getOwnPropertyNames");
// Object.getOwnPropertyNames: 1003.471923828125ms

不过在不添加symbol属性的时候,时间消耗是一样的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文