(関数)
https://qiita.com/phoby20/items/83a28eced779d8ab16b8
オブジェクトを返す関数のこと。
ただ、コンストラクター関数のようにnewキーワードをつけるのではなく、関数そのものがオブジェクトを返す関数のことを意味する。
ファクトリ関数の特徴
- newキーワードを使う必要がない。
- よって関数内でthisも使う必要もない。
ファクトリ関数の例
ファクトリ関数では、コンストラクター関数のようにnewキーワードやthisの指定も必要ない。
function createCar(maker, carName, year) {
return {
maker,
carName,
year
}
}
const car1 = createCar(bonda, 'プリアス', 2022)
ファクトリ関数の利点
① 関数内でデータを加工してオブジェクトを返すことができる。
ものによっては受け取った引数をそのまま使わず、加工してからオブジェクトを返したい場合がある。
ファクトリ関数を使うと、これらができる利点がある。
もちろんコンストラクタ関数にメソッドを追加して加工することも可能であるが、ファクトリ関数ではメソッドを使わずに加工できるので、より簡単でもある。
function createCar(maker, carName, year) {
return `この車は、${year}年に${maker}が造った${carName}です。`
}
const car1 = createCar(bonda, 'プリアス', 2022)
console.log(car1) // この車は、2022年にbondaが造ったプリアスです。
② スコープ内の変数を利用することができる。
以下のコードだと、ceateBookの関数の外にpagesの変数があるが、こと関数を実行すると、関数内のpagesの変数が参照される。
このことによって、関数の外と内の変数を区別して使用することができる。
let pages = 10;
function createBook(title) {
let pages = 1;
let read = function() {
console.log(`${title}を ${pages++} ページ読みました。`);
};
return {title, read};
}