본문 바로가기

JS skills

11. 팩토리 함수

◼ Factory Function ?

 

팩토리 함수는 클래스나 생성자 함수에는 속하지 않는 함수이자, 새로운 객체를 리턴하는 함수이다. 

new 키워드가 없으면 팩토리 함수일 확률이 높다.

 

const name = "mung";
const age = 28;

const user = {
  name,
  age,

  setUserName(name) {
    this.userName = name;
    return this;
  },
};

console.log(user.setUserName("choi").userName); // "choi"

 

user.setUserName("choi") 는 .setUserName() 을 user 에게 적용한다. 이 때, this 는 user 가 되며 

.setUserName() 내부의 this 를 통해 user 객체의 .userName 속성을 변경한다. return this; 는 메소드 체이닝을 할 수 있게 한 것이다.

 

◼ Literals for One, Factories for Many 

 

객체를 반복해서 생성해야 하는 경우 객체 리터럴과 팩토리 함수의 기능을 결합해야한다. 팩토리 함수를 사용하면 원하는 만큼 많은 객체를 생성할 수 있기 때문이다. ex) 채팅 어플리케이션

 

const createUser = ({ name, age }) => ({
  name,
  age,
  setUserName(name) {
    this.userName = name;
    return this;
  },
});

console.log(createUser({ name: "mung", age: 28 }));

 

 

 

✅ ({name, age}) 부분과 같이 객체 리터럴을 암시적으로 반환하고 싶은 경우 중괄호 바깥을 괄호로 감싸주어야 한다는 점에 주의하자.

 

 

◼ Destructuring

 

const createUser = ({ userName, age }) => ({

 

중괄호 ( { , } ) 는 객체를 해체하라는 의미로 해석된다. 이 함수는 하나의 인수(객체) 를 받지만 이를 해체하여 userName 과 age 라는 두 매개변수에 값을 바인딩한다.

 


👀 reference 

 

https://tpgns.github.io/2018/04/08/javaScript-factory-function-with-es6/

 

 

'JS skills' 카테고리의 다른 글

13. 재귀함수  (0) 2021.09.06
12. return  (0) 2021.08.30
10. for...in / 기명 함수 표현식  (0) 2021.08.28
9. HTML templating  (0) 2021.08.27
8. method chaining  (0) 2021.08.27