LoginSignup
1
2

More than 5 years have passed since last update.

JavaScriptのオブジェクト指向

Posted at

JavaScript本格入門の内容を自分用にメモ

JavaScriptは「クラス」ではなく「プロトタイプ」

JavaScriptはオブジェクト指向言語だが、JavaやC++といったオブジェクト指向言語とは根本的な違いがある。
それは、インスタンス化という概念はあるが、いわゆる「クラス」がなく、「プロトタイプ」という概念だけが存在する点。
プロトタイプとは、「あるオブジェクトの元となるオブジェクト」のこと。JavaScriptではクラスの代わりにプロトタイプを利用して新たなオブジェクトを生成していく。

シンプルなプロトタイプ(いわゆるクラス)を定義してみる

# 空のプロトタイプを定義
var Member = function() {};
# new演算子でインスタンス化
var mem = new Member();

変数Memberに対して空の関数リテラルを代入しているだけのように見えるが、これがJavaScriptのプロトタイプ(いわゆるクラス)。
つまり、

JavaScriptでは関数(Functionオブジェクト)にクラスとしての役割を与えている

これは、「プロトタイプ」 = 「あるオブジェクトの元のオブジェクト」の定義から考えると、JavaScriptではFunctionオブジェクトを元にオブジェクトが作成されていると解釈できるので、プロトタイプの理解がしやすい。

1
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2