JavaScript/オブジェクト型
オブジェクト型
編集オブジェクト型 (Object type) は、JavaScriptにおける複雑なデータ構造を表すデータ型です。オブジェクト型は、プロパティ
(キーと値のペア)やメソッド
(関数)を持つことができ、柔軟で強力な機能を提供します。
オブジェクト型の特徴
編集- プロパティとメソッド: オブジェクトは名前付きプロパティを持ち、これにアクセスしたり変更することができます。また、プロパティとして関数を持つ場合、それは「メソッド」と呼ばれます。
- ミュータブル(可変性): プリミティブ型とは異なり、オブジェクト型はその内容を変更することができます。
- 参照型: オブジェクト型は値そのものではなく、その値への参照を格納します。
オブジェクトの作成方法
編集JavaScriptでは、オブジェクトを作成するさまざまな方法があります。
- オブジェクトリテラル:
const obj = { key: "value", method() { console.log("Hello!"); } };
- コンストラクター関数:
function Person(name) { this.name = name; } const person = new Person("Alice");
Object.create
メソッド:const prototype = { greet() { console.log("Hi!"); } }; const obj = Object.create(prototype);
- クラス構文:
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には特殊なオブジェクト型がいくつか存在します。
- 配列 (
Array
): 順序付きのデータを格納します。 - 関数 (
Function
): 実行可能なコードのブロック。 - 日付 (
Date
): 日付や時刻を扱うためのオブジェクト。 - 正規表現 (
RegExp
): パターンマッチングを行うオブジェクト。 - エラオブジェクト (
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のデータ型はオブジェクト型に分類されます。
- オブジェクト型は参照型であり、内容を変更可能である点が特徴です。