我们有一个具有超过 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/