コンテンツにスキップ

JavaScript/オブジェクト型

出典: フリー教科書『ウィキブックス(Wikibooks)』

オブジェクト型

[編集]

オブジェクト型 (Object type) は、JavaScriptにおける複雑なデータ構造を表すデータ型です。オブジェクト型は、プロパティ(キーと値のペア)やメソッド(関数)を持つことができ、柔軟で強力な機能を提供します。

オブジェクト型の特徴

[編集]
  • プロパティとメソッド: オブジェクトは名前付きプロパティを持ち、これにアクセスしたり変更することができます。また、プロパティとして関数を持つ場合、それは「メソッド」と呼ばれます。
  • ミュータブル(可変性): プリミティブ型とは異なり、オブジェクト型はその内容を変更することができます。
  • 参照型: オブジェクト型は値そのものではなく、その値への参照を格納します。

オブジェクトの作成方法

[編集]

JavaScriptでは、オブジェクトを作成するさまざまな方法があります。

  1. オブジェクトリテラル:
    const obj = {
        key: "value",
        method() {
            console.log("Hello!");
        }
    };
    
  2. コンストラクター関数:
    function Person(name) {
        this.name = name;
    }
    const person = new Person("Alice");
    
  3. Object.create メソッド:
    const prototype = {
        greet() {
            console.log("Hi!");
        }
    };
    const obj = Object.create(prototype);
    
  4. クラス構文:
    class Animal {
        constructor(name) {
            this.name = name;
        }
    }
    const dog = new Animal("Dog");
    

プロパティの操作

[編集]

オブジェクトのプロパティにアクセスする方法は以下の通りです。

// プロパティの取得
console.log(obj.key);    // ドット記法
console.log(obj["key"]); // ブラケット記法

// プロパティの設定
obj.key = "newValue";

// プロパティの削除
delete obj.key;

特殊なオブジェクト型

[編集]

JavaScriptには特殊なオブジェクト型がいくつか存在します。

  1. 配列 (Array): 順序付きのデータを格納します。
  2. 関数 (Function): 実行可能なコードのブロック。
  3. 日付 (Date): 日付や時刻を扱うためのオブジェクト。
  4. 正規表現 (RegExp): パターンマッチングを行うオブジェクト。
  5. エラオブジェクト (Error): エラー情報を表します。

オブジェクト型の判定

[編集]

オブジェクト型かどうかを確認するには、typeof 演算子や instanceof 演算子を使用します。

const obj = {};
console.log(typeof obj);        // "object"
console.log(obj instanceof Object); // true

ただし、null はプリミティブ型であるにもかかわらず、typeof null"object" を返す点に注意してください。

オブジェクトのコピー

[編集]

オブジェクトのコピーは「浅いコピー」と「深いコピー」に分類されます。

// 浅いコピー
const shallowCopy = Object.assign({}, obj);

// 深いコピー(再帰的にコピーする場合)
const deepCopy = JSON.parse(JSON.stringify(obj));

まとめ

[編集]
  • オブジェクト型は、プロパティやメソッドを持つ複雑なデータ構造です。
  • 配列や関数など、多くのJavaScriptのデータ型はオブジェクト型に分類されます。
  • オブジェクト型は参照型であり、内容を変更可能である点が特徴です。