概要:このチュートリアルでは、オブジェクトを返す関数であるJavaScriptファクトリ関数について学びます。
JavaScriptでのファクトリ関数の紹介
ファクトリ関数は、新しいオブジェクトを返す関数です。 以下では、personという名前のオブジェクトを作成しますjohn
:
Code language: JavaScript (javascript)
出力:
john
オブジェクトには、firstName
とlastName
の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()
を使用します。
- このチュートリアルは役に立ちましたか?