コンテンツにスキップ

JavaScript/object

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

object

[編集]

object は、JavaScriptにおけるデータ型の一つで、プロパティの集合を持つ複雑なデータ構造を表します。オブジェクトは、キーと値のペア(プロパティ)を保持し、これにより異なるデータを一つの構造にまとめることができます。JavaScriptでは、オブジェクトは非常に柔軟で、様々な用途に使用されます。

基本構文

[編集]
// オブジェクトリテラルの例
const person = {
  name: "John",  // プロパティ: name, 値: "John"
  age: 30,       // プロパティ: age, 値: 30
  greet() {
    console.log("Hello, " + this.name);
  }
};

オブジェクトの作成方法

[編集]

JavaScriptでは、オブジェクトをいくつかの方法で作成できます。

オブジェクトリテラル

[編集]

最も一般的な方法は、オブジェクトリテラルを使用してオブジェクトを定義する方法です。

const car = {
  make: "Toyota",
  model: "Corolla",
  year: 2020
};

new Object()

[編集]

new Object() を使ってオブジェクトを作成することもできますが、オブジェクトリテラルの方が一般的で簡潔です。

const obj = new Object();
obj.name = "Alice";
obj.age = 25;

Object.create() を使うと、指定したオブジェクトをプロトタイプとして持つ新しいオブジェクトを作成できます。

const animal = {
  speak() {
    console.log("Animal sound");
  }
};

const dog = Object.create(animal);
dog.speak(); // "Animal sound" と出力される

オブジェクトのプロパティ

[編集]

オブジェクトは、キーと値のペアである「プロパティ」を持っています。プロパティにアクセスする方法には、ドット記法とブラケット記法の2つの主な方法があります。

ドット記法

[編集]
const person = {
  name: "John",
  age: 30
};
console.log(person.name); // "John"

ブラケット記法

[編集]

ブラケット記法を使うと、キーに変数やスペースを含めることができます。

const person = {
  "first name": "John",
  "last name": "Doe"
};
console.log(person["first name"]); // "John"

オブジェクトのメソッド

[編集]

オブジェクトは、プロパティとして関数を持つこともできます。これらの関数は「メソッド」と呼ばれます。

const person = {
  name: "John",
  greet() {
    console.log("Hello, " + this.name);
  }
};
person.greet(); // "Hello, John" と出力される

プロトタイプと継承

[編集]

JavaScriptでは、オブジェクトはプロトタイプチェーンを通じて他のオブジェクトからプロパティを継承することができます。新しいオブジェクトを作成する際、Object.create() を使って、指定したオブジェクトをプロトタイプとして設定することができます。

const animal = {
  speak() {
    console.log("Animal sound");
  }
};

const dog = Object.create(animal);
dog.speak(); // "Animal sound" と出力される

null プロトタイプ

[編集]

Object.create(null) を使うことで、プロトタイプが null のオブジェクトを作成できます。これにより、オブジェクトは Object.prototype のメソッドを持たなくなります。

const obj = Object.create(null);
console.log(Object.getPrototypeOf(obj)); // null

特徴

[編集]
  • 動的: オブジェクトは動的にプロパティを追加したり削除したりすることができます。
  • 参照型: オブジェクトは参照型であり、変数に代入すると、その変数はオブジェクトを参照します。
const person1 = { name: "John" };
const person2 = person1;
person2.name = "Alice";
console.log(person1.name); // "Alice" と出力される

オブジェクトのメソッド

[編集]

オブジェクトには多くの組み込みメソッドが提供されています。例えば、Object.keys()Object.values() などです。

const person = { name: "John", age: 30 };
console.log(Object.keys(person)); // ["name", "age"]
console.log(Object.values(person)); // ["John", 30]

まとめ

[編集]
  • object は、プロパティの集合を持つ複雑なデータ型です。
  • オブジェクトは、ドット記法やブラケット記法でアクセスできます。
  • オブジェクトは、プロトタイプを通じて継承することができます。
  • Object.create() を使うと、指定したプロトタイプを持つ新しいオブジェクトを作成できます。