JavaScriptのオブジェクトとプロトタイプ

概要

JavaScriptでは、オブジェクトは非常に重要な概念です。この章では、オブジェクトの作成と操作、プロトタイプを用いた継承について学びます。

目次

  1. オブジェクトの基本
  2. プロパティとメソッド
  3. プロトタイプと継承
  4. コンストラクタ関数
  5. プロトタイプチェーン
  6. オブジェクトの拡張と制限

1. オブジェクトの基本

JavaScriptのオブジェクトは、キーと値のペアの集合です。オブジェクトはリテラル構文を使用して作成することができます。

const person = {
  name: "John Doe",
  age: 30,
  greet: function() {
    console.log("Hello, my name is " + this.name);
  }
};

2. プロパティとメソッド

オブジェクトのプロパティは、オブジェクトに関連するデータを保持します。メソッドは、オブジェクトに関連する動作を定義します。

person.name; // "John Doe"
person.greet(); // "Hello, my name is John Doe"

3. プロトタイプと継承

プロトタイプは、オブジェクトから他のオブジェクトにプロパティやメソッドを継承するメカニズムです。すべてのJavaScriptオブジェクトは、プロトタイプチェーンとして知られる継承のシリーズを持っています。

function Person(name, age) {
  this.name = name;
  this.age = age;
}

Person.prototype.greet = function() {
  console.log("Hello, my name is " + this.name);
};

const john = new Person("John Doe", 30);
john.greet(); // "Hello, my name is John Doe"

4. コンストラクタ関数

コンストラクタ関数は、特定のタイプのオブジェクトを作成するために使用されます。newキーワードを使用して新しいオブジェクトのインスタンスを作成できます。

const jane = new Person("Jane Doe", 25);
jane.greet(); // "Hello, my name is Jane Doe"

5. プロトタイプチェーン

オブジェクトは、そのプロトタイプに存在しないプロパティを要求されたとき、プロトタイプチェーンを通じてそのプロパティを探します。

Person.prototype.walk = function() {
  console.log(this.name + " is walking.");
};

john.walk(); // "John Doe is walking."
jane.walk(); // "Jane Doe is walking."

6. オブジェクトの拡張と制限

JavaScriptでは、オブジェクトに新しいプロパティやメソッドを追加したり、既存のものを変更したりすることができます。また、Object.freeze()Object.seal()を使ってオブジェクトの拡張を制限することもできます。