JavaScript オブジェクトのプロパティ数に制限はありますか? 質問する

JavaScript オブジェクトのプロパティ数に制限はありますか? 質問する

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 は正常に動作します。

ベストアンサー1

Chromeの現在のバージョン(2017年9月)では、830万個のキーブラウザのコンソールにこれを貼り付けてみてください:

const obj = {};
let keyCount = 0;
while (true) {
  obj[Math.random().toString(36)] = keyCount;
  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); }"

興味深いことに、地図、私は約1,680万クラッシュする前にキーを1つ以上押すと(この制限は次のようにすれば回避できます)これ)。

おすすめ記事