ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript オブジェクトのプロパティ順序の秘密

JavaScript オブジェクトのプロパティ順序の秘密

Barbara Streisand
Barbara Streisandオリジナル
2024-10-14 13:31:03589ブラウズ

最近、JavaScript オブジェクトのプロパティは必ずしも順序付けされておらず、予測できないものなのでしょうか?

JavaScript に早くから慣れ親しんだ開発者は、Object.keys() または for...in がオブジェクト プロパティの予測できない順序を返すと答えるかもしれません。しかし、今もそうなのでしょうか?

ご想像のとおり、従うべきルールがあります。

ECMAScript 2020 以降、Object.keys、for...in、Object.getOwnPropertyNames、および Reflect.ownKeys はすべて同じ指定順序に従います。それらは次のとおりです:

1. 独自のプロパティは、数値インデックスの昇順の配列インデックスです。

The Secrets of JavaScript Object Property Order

配列インデックスは、正規の数値文字列である文字列値のプロパティ キーです。正規の数値文字列は、ToString によって生成される数値の文字列表現、または文字列 "-0" です。たとえば、「012」は正規の数値文字列ではありませんが、「12」は正規の数値文字列です

2. 他の独自の String プロパティ (プロパティ作成の昇順)

The Secrets of JavaScript Object Property Order

上記のコードは、イベント ループのナレッジ ポイントを追加します。 setTimeoutは非同期マクロタスクであるため、console.log出力時にobjにcプロパティが追加されていません。

3. 独自のシンボル プロパティ (プロパティ作成の昇順)

The Secrets of JavaScript Object Property Order

Symbol プロパティは、プロパティ作成の昇順で String プロパティと同じです。ただし、Object.keys メソッド、つまり Object.getOwnPropertyNames メソッドはオブジェクトの Symbol プロパティを取得できませんが、Reflect.ownKeys メソッドと Object.getOwnPropertySymbols メソッドは取得できます。

結論

オブジェクトのプロパティ キーが上記のタイプの組み合わせである場合、オブジェクトの非負の整数キー (列挙可能および非列挙可能) が最初に昇順で配列に追加され、次に文字列キーが挿入順序で追加されます。最後に、シンボル キーが挿入順に追加されます。

The Secrets of JavaScript Object Property Order

ただし、広告掲載順序に強く依存している場合は、Map がそれを保証します。

これが役立つと思われた場合は、 ニュースレターの購読を検討してください Web 開発に関するさらに役立つ記事やツールをご覧ください。読んでいただきありがとうございます!

以上がJavaScript オブジェクトのプロパティ順序の秘密の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。