【JavaScript】「オブジェクト」と「連想配列」の違いとは?プログラム例で解説!

この記事ではJavaScriptの「オブジェクト」と「連想配列」について、

  • 「オブジェクト」と「連想配列」の違い

などを図を用いて分かりやすく説明するように心掛けています。ご参考になれば幸いです。

「オブジェクト」と「連想配列」の違い

結論から言うと、JavaScriptでは「連想配列」という用語は特に使いません。

しかし、以下のプログラムに示すように、個々のプロパティ名(以下のプログラムではnameage)が文字列値と関連付けられてアクセスできるため、JavaScriptのオブジェクト連想配列と呼ばれることがあります。

let person = {
    name: 'Taro',
    age: 30
};

// プロパティ名を直接使用して値にアクセス
console.log(person.name);   //ログ: Taro
console.log(person.age);    //ログ: 30

// 個々のプロパティを文字列値と関連付けてアクセス
console.log(person['name']);    //ログ: Taro
console.log(person['age']);     //ログ: 30

一方、JavaScriptのオブジェクトでは、値に’Taro’30などのデータだけでなく、メソッド(関数)も保持することができます。以下のプログラムでは、greetがメソッドです。一方、連想配列はメソッドを保持することができません。

let person = {
    name: 'Taro',
    age: 30,
    greet: function () {
        console.log(`Hello, my name is ${this.name}`); //オブジェクトはメソッドを保持することができる!!
    }
};

// プロパティ名を直接使用して値にアクセス
console.log(person.name);   //ログ: Taro
console.log(person.age);    //ログ: 30

// 個々のプロパティを文字列値と関連付けてアクセス
console.log(person['name']);    //ログ: Taro
console.log(person['age']);     //ログ: 30

つまり、オブジェクト連想配列の主な違いは、オブジェクトがメソッドを保持できる点です。

加えて、JavaScriptのオブジェクトは、他のオブジェクトからプロパティやメソッドを継承する「プロトタイプ継承」をサポートしています。一方、連想配列は「プロトタイプ継承」をサポートしていません。

ポイント

JavaScriptでは「連想配列」という用語は特に使いません。なぜなら、JavaScriptにおけるオブジェクト連想配列のように動作するだけでなく、それ以上の機能(メソッドやプロトタイム継承など)も持っているためです。

本記事のまとめ

この記事ではJavaScriptの「オブジェクト」と「連想配列」について、以下の内容を説明しました。

  • 「オブジェクト」と「連想配列」の違い

お読み頂きありがとうございました。