【javascript】コンストラクタ関数とファクトリ関数の違いを例付きでまとめてみた!

javascriptにはコンストラクタ関数とファクトリ関数という関数が存在します。

この2つは役割が非常に似ているため、混同しやすいので、自分への備忘録も兼ねて、例文コードと共に、違いを紹介します!

ファクトリ関数

ファクトリ関数とは、「1つのオブジェクトを返す関数」のことを言います。

このように、returnで必要な情報がすべて入ったObjectを返却する関数です。

ファクトリ関数はキャメルケース

1つのObjectを返す関数という約束の他に、ファクトリ関数を宣言するときは、キャメルケースで宣言することが一般的です。

コンストラクト関数

コンストラクト関数とは、実際にその関数を使うときに、

「new 関数名」

という形で、関数をインスタンス化しないといけない関数です。

「new 関数名」と記述して、関数をインスタンス化して使用する点が、他の言語のClassに似ているので、prototype拡張を利用して、クラスのように使われることが多いです。

コンストラクタ関数はアッパーキャメルケース

コンストラクタ関数はClassのように使われることが多いことから、一般的には、アッパーキャメルケースで宣言します。

Babelを使えば、Classが使えるが、古いProjectにアサインされる可能性もある

Babelを使えば、最新のjavascriptを古いブラウザでも読み取れるようにコンパイルしてくれるので、Classが使えるようになり、ファクトリ関数もコンストラクタ関数も共に使用せずに安全で拡張性の高いプログラムを書くことが可能になります。

しかし、昔から続くプロジェクトにアサインされた場合、ファクトリ関数やコンストラクタ関数が使われている可能性が非常に高いです。

実際、多くのOSSライブラリはコンストラクタ関数が使われています。

どのような現場でも、パフォーマンスが発揮できるように、コンストラクタ関数もファクトリ関数も覚えておいて損はないでしょう!

ABOUTこの記事をかいた人

新卒でノマドワーカー(webデザイナー)として独立し、半年で月収100万円を達成する。その後、事務所を売却(バイアウト)したり、Youtuber(最高月間視聴回数109万回、チャンネル登録者1万人)をしたり、Openrecの公式配信者としてゲーム生実況をしたり、ベンチャー企業のCOOをしたり、パラレルキャリアを歩んできました。 2019年にミニマムライフコストを不労所得で稼げるようになったため、いまは、お金のことを考えずに、様々な企業でエンジニア修行をさせていただきながら、複数のメディアやアプリとweb制作事務所を運営しています。 趣味は株式投資(米国・日本株メイン)で、トレードを楽しむ日も多いです!