JavaScriptのインスタンスを理解する

参考、引用:
JavaScriptでnewしてインスタンス生成 - Qiita
クラスのインスタンス。 [いまさら聞けないJavaScript用語] : ずっと工事中
オブジェクト指向 JavaScript 入門 - JavaScript | MDN
Google流 JavaScript におけるクラス定義の実現方法


インスタンスって何?

まず、JavaScriptで使われる用語の整理をしてみます。


ネームスペース (名前空間

開発者があらゆる機能をアプリケーション固有の一意な名前にまとめることができる一種の容器のことです。

クラス

オブジェクトの特性を定義するものです。クラスは、オブジェクトのプロパティやメソッドを定義するテンプレートです。

オブジェクト

クラスの実体です。

プロパティ

「色」などといったオブジェクトの特性です。

メソッド

「歩く」などといった、オブジェクトの能力です。これは、クラスに関連付けられたサブルーチンや関数です。

コンストラクタ

インスタンス化するときに呼び出されるメソッドです。コンストラクタの名前は通常、クラスの名前と同じです。

var Addressbook = function(name,phoneNum,email){ //これがコンストラクタ。インスタンス化を行う。
      this.name = name;
      this.phoneNum = phoneNum;
      this.email = email;    //インスタンスプロパティ。
};

var suzuki = new Addressbook('Suzuki','(070)123-456','suzuki@suzuki.jp'); //suzukiはAddressbookクラスのインスタンス。

JavaScriptでは、他のclass文をもつ言語とは異なり、クラスは関数を用いて定義されます。
上記の例では、Addressbookというクラスが定義されています。
new Addressbook によって新しいオブジェクトが生成され、それが this に格納されて Addressbook が実行され、 name, phoneNum, email がオブジェクトにセットされます。そして生成されたオブジェクトは suzuki に代入されます。 そのため、suzuki.name, suzuki.phoneNum, suzuki.email は Adressbook に渡された引数 name, phoneNum, email になります。
Addressbookクラスを定義した後、変数suzukiを用意してあげることで、実体(オブジェクト)が得られます。これをインスタンスと私は理解しています。