【JavaScript】インスタンス化とは?なぜ必要なのか?生成方法は?
おはようございます。タカヒデです。
本日は、「JavaScriptにおける、『インスタンス化』について、『なぜインスタンス化するのか』『インスタンスの生成方法』」を紹介します。
- JavaScriptにおける『インスタンス化』が理解できない
- 『なぜインスタンス化するのか』『インスタンスの生成方法』を知りたい
ぜひ本記事を参考にしてください。
インスタンス化とは
インスタンス化とは、既存のオブジェクトの複製を作ることです。
合わせて、インスタンスとは、インスタンス化によって作られた複製したオブジェクトのことを指します。

オブジェクトを使用する際、変更を加える際には既存のオブジェクトを直接使用するのではなく、複製したオブジェクト(インスタンス)に対して行う必要があります。
なぜインスタンス化が必要なのか?
ではなぜ、既存のオブジェクトを直接使用するのではなく、インスタンス化を行う必要があるのでしょうか。
それは、オブジェクトへ複数箇所から異なる目的でデータを書き込みしてしまうと、データが互いに衝突して正しく動作しないことがあるためです。
イメージを見てみましょう。

既存のオブジェクトを直接変更した場合
既存のオブジェクトのプロパティに対し、
・Xコードでは5⇒10に変更
・Yコードでは5⇒7に変更
という異なる目的の変更を行ってしまうと、変更が衝突してしまい、コードが正しく動作しなくなってしまいます。
インスタンスに対して変更した場合
ある既存のオブジェクトをインスタンス化した上でプロパティの変更を行います。
・XコードではインスタンスAに対し5⇒10に変更
・YコードではインスタンスBに対し5⇒7に変更
と、それぞれのインスタンスに対し変更を行います。そのため、双方に影響はなく、コードは正しく動作します。
このように、既存のオブジェクトは触らず、インスタンスを操作することでデータの衝突を防ぐためインスタンス化が必要になります。
インスタンスの生成方法
インスタンスの生成には『new演算子』を利用します。
『new演算子』を利用することで、あらかじめ用意されたオブジェクトをもとに、新しいオブジェクトを生成することができます。
//インスタンス生成の記載方法
変数名 = new オブジェクト名( 引数 )引数とは?
…オブジェクトや関数に渡す値
…渡された値に対して処理を行い結果を返す
以下が記載例です。
let testDate = new Date(2000, 4, 1, 10, 11, 30)
console.log(testDate);
//実行結果:Mon May 01 2000 10:11:30 GMT+0900 (日本標準時)既存の「Dateオブジェクト」を変数「testDate」に代入しインスタンスを生成しており、対象となる「年月日時分秒」を実行しています。
具体的には、渡された引数の値から『Mon May 01 2000 10:11:30 GMT+0900 (日本標準時)』を実行しています。
まとめ
以上が「JavaScriptにおける『インスタンス化』について、『なぜインスタンス化するのか』『インスタンスの生成方法』」でした。
- インスタンス化とは、既存のオブジェクトの複製を作ること
- インスタンスとは、インスタンス化によって作られた複製したオブジェクトのこと
- インスタンスは『new演算子』を利用して生成する
この記事が誰かの参考になれば幸いです。
お疲れさまでした。
