Factory function

함수가 객체를 반환할 때 이것을 factory function 이라고 부릅니다.
여기서 객체를 반환한다고 해서 팩토리 함수는 클래스나 생성자 함수가 아닙니다.
Javascript 에서는 모든 함수가 객체를 반환할 수 있습니다.
이 때 new 키워드가 없으면 팩토리 함수입니다.
팩토리 함수는 클래스와 new 키워드의 복잡함 없이 객체 인스턴스를 쉽게 생성할 수 있습니다.
팩토리 함수명으로 create 접두사를 붙여주면 명확하게 함수 의도를 전달해줄 수 있습니다.

객체를 반복해서 생성해야 하는 경우 객체 리터럴과 팩토리 함수의 기능을 결합해야 합니다.
예를 들어 나를 제외한 다른 사용자들을 나타낼 때 많은 사용자 객체가 필요할 때 객체 리터럴과 팩토리 함수의 기능을 결합할 수 있습니다.

const name = "hyesik";
const age = 23;

const user = {
  name,
  age,
  setUserName (name) {
    this.name = name;
    return this;
  }
};

const createUser = ({name, age}) => ({
  name,
  age,
  setUserName (name) {
    this.name = name;
    return this;
  }
 });
 
 console.log(createUser({ name: "sikhye", age: 32 })); 
 // {name: "sikhye", age: 32, setUserName: f};

위 예제와 같이 객체를 반복해서 생성해야 할 때 객체 리터럴과 팩토리 함수의 기능을 결합할 수 있습니다.

화살표 함수는 암시적인 리턴을 합니다.
객체 리터럴을 반환하려고 할 때 주의해야 할 점은
중괄호 바깥을 괄호로 감싸주어야 합니다.

const createSik = () => {name: "sikhye"};
console.log(createSik()); // undefined
const createSik = () => ({ name: "hyesik" });
console.log(createSik()); // {name: "hyesik"}

좋은 웹페이지 즐겨찾기