javascript - JavaScript 对象中的属性数量有限制吗?

标签 javascript object properties

我们有一个具有超过 75000 个属性的对象。对象的格式如下:

// The key starts with 3 letters and then is followed by 8 numbers
var bigArray = {'AAA########':123456789,
                'AAA########':123456790,
                'AAA########':123456791
               }; 

JavaScript 对象的属性数量是否存在已知限制?根据我的测试,该对象在 65500 个元素下仍然有效。

  • 在 Windows 7、IE9 中,脚本崩溃(错误 -2147024882)。
  • Windows XP、IE8 运行良好。

最佳答案

在当前版本的 Chrome(2017 年 9 月)中,我只能使用大约830 万个键。尝试将其粘贴到浏览器控制台中:

let obj = {};
let keyCount = 0;
while(1) {
  obj[Math.random()] = Math.random();
  if(++keyCount % 10000 === 0) console.log(keyCount);
}

我在 Node.js 中得到了相同的限制:

node --max-old-space-size=20000 -e "let obj = {}; let keyCount = 0; while(1) { obj[Math.random()] = Math.random(); if(++keyCount % 10000 === 0) console.log(keyCount); }"

有趣的是,如果我使用 Map ,在崩溃之前我可以获得大约1680万个 key (您可以使用 this 之类的东西来超越这个限制)。

关于javascript - JavaScript 对象中的属性数量有限制吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19189787/

相关文章:

java - 变量类名 Java

java - 返回一个类的实例(数组)

javascript - 使用矩了解特定日期的数字类型的日和月

javascript - 在 IE 11 中循环一段代码

javascript - 如何验证已填写的输入字段?

object - 在 Ember.js 中扩展 View 或使用 mixin

javascript - ionic 应用程序 CORS 不存在 'Access-Control-Allow-Origin' header ,使用带有 CORS 中间件的 Lumen API

delphi - Variant 属性可以有默认值吗?

objective-c - 在 Objective C 中使用枚举类型作为属性

python - 如何动态创建 PyQt 属性