JavaScriptファクトリ関数

概要:このチュートリアルでは、オブジェクトを返す関数であるJavaScriptファクトリ関数について学びます。

JavaScriptでのファクトリ関数の紹介

ファクトリ関数は、新しいオブジェクトを返す関数です。 以下では、personという名前のオブジェクトを作成しますjohn:

Code language: JavaScript (javascript)

出力:

johnオブジェクトには、firstNamelastNameの2つのプロパティと、完全な名前を返すメソッドgetFullName()があります。

と呼ばれる別の同様のオブジェクトを作成する必要があると仮定しますjane、次のようにコードを複製できます:

Code language: JavaScript (javascript)

出力:

janeオブジェクトは、johnオブジェクトと同じプロパティとメソッドを持ちます。

作成するオブジェクトが多いほど、コピーする必要がある重複コードが増えます。

同じコードを何度も何度もコピーしないようにするには、personオブジェクトを作成する関数を開発できます:

Code language: JavaScript (javascript)

関数がオブジェクトを作成するとき、それはファクトリ関数と呼ばれます。 createPerson()は、新しいpersonオブジェクトを返すため、ファクトリ関数です。

次のコードは、createPerson()ファクトリ関数を使用して、2つのオブジェクトjohn

を作成しますjane:

Code language: JavaScript (javascript)

ファクトリ関数を使用すると、コードを複製せずに、必要なpersonオブジェクトを任意の数作成できます。

オブジェクトを作成するとき、そのオブジェクトにはメモリ内のスペースが必要です。 1000個のpersonオブジェクトがある場合、これらのオブジェクトを格納するためにメモリに1000個のスペースが必要です。 ただし、これらのpersonオブジェクトは同じgetFullName()メソッドを持ちます。

メモリ内で同じgetFullName()関数が繰り返されないようにするには、personオブジェクトからgetFullName()メソッドを削除します:

Code language: JavaScript (javascript)

このメソッドを別のオブジェクトに移動します:

Code language: JavaScript (javascript)

また、personオブジェクトのgetFullName()メソッドを呼び出す前に、次のようにbehaviorオブジェクトのメソッドをpersonオブジェクトに割り当てることができます:

Code language: JavaScript (javascript)

多くのメソッドがあり、それらを手動で割り当てる必要がある場合は、より困難になります。

これがObject.create()メソッドの出番です。

オブジェクト。create()メソッド

Object.create()メソッドは、既存のオブジェクトを新しいオブジェクトのプロトタイプとして使用して新しいオブジェクトを作成します:

Code language: CSS (css)

したがって、次のようにObject.create()を使用できます:

Code language: JavaScript (javascript)

これで、personオブジェクトを作成し、behaviorオブジェクトのメソッドを呼び出すことができます:

Code language: JavaScript (javascript)

コードは完全に正常に動作します。 ただし、実際には、ファクトリ機能はほとんど表示されません。 代わりに、関数コンストラクタまたはクラスが表示されます。

概要

  • ファクトリ関数は、新しいオブジェクトを返す関数です。
  • 既存のオブジェクトをプロトタイプとして使用してオブジェクトを作成するには、Object.create()を使用します。
  • このチュートリアルは役に立ちましたか?

You might also like

コメントを残す

メールアドレスが公開されることはありません。