1. ホーム
  2. javascript

[解決済み] 配列に名前付きプロパティをオブジェクトのように追加できるのはなぜですか?

2022-10-21 06:15:28

質問

次の二つの異なるコードスニペットは、私には同等に見えます。

var myArray = Array();
myArray['A'] = "Athens";
myArray['B'] = "Berlin";

var myObject = {'A': 'Athens', 'B':'Berlin'};

はどちらも同じ挙動をするからであり、また typeof(myArray) == typeof(myObjects) (も同じだからです(どちらも'object'を生成します)。

これらの変種に違いはあるのでしょうか?

どのように解決するのですか?

javascriptでは、事実上すべてのものがオブジェクトなので、quot;abuse" を使用することができます。 配列 オブジェクトに任意のプロパティを設定することで、濫用することができます。これは は有害であると考えるべきで とはいえ。配列は数値でインデックスされたデータのためのもので、数値以外のキーにはオブジェクトを使用します。

なぜ非数値のキーが配列に合わないのか、より具体的な例を挙げてみましょう。

var myArray = Array();
myArray['A'] = "Athens";
myArray['B'] = "Berlin";

alert(myArray.length);

これは '2' ではなく '0' を表示します。事実上、配列に要素は追加されておらず、いくつかの新しいプロパティが配列オブジェクトに追加されただけです。