ES6 の決定論的プロパティ列挙
質問:
プロパティの順序を導入しているにもかかわらず、ES6 ではすべてのオブジェクトのプロパティを列挙するための明確に定義された順序を保証します。操作?
答え:
ES2015-ES2019:
いいえ、for-in、Object などの特定の操作では.keys および JSON.stringify では、ES6 は特定の列挙順序を強制しません。これは、下位互換性の問題によるものです。[[Enumerate]] メソッドを利用する
for-in ループには、ECMAScript 仕様に従って未定義の列挙順序があります。
Object.keys も許可します。 for-in ステートメントのカスタム列挙順序を定義する実装。
ES2020 およびその後:
ES2020 以降、for-in や Object.keys などの従来の操作でもプロパティの順序が尊重される必要があります。
順序が定義された追加の操作:
ES6 のその他の操作 (Object.getOwnPropertyNames など) Object.getOwnPropertySymbols および Object.defineProperties は、通常のオブジェクトのプロパティ作成順序に従います。この順序は次のとおりです。
例外:
ただし、プロキシなどの特定のエキゾチック オブジェクトは、列挙順序を変更するために独自の [[OwnPropertyKeys]] メソッドを定義する場合があります。
以上がES6 はすべての操作にわたって一貫したプロパティ列挙順序を保証しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。