Skip to content

생성자 함수 (Constructor Function)

생성자 함수란 객체(또는 배열 등)를 생성하기 위한 특수한 함수이다. 자바스크립트에서 객체를 생성할 때 공통된 구조나 초기값을 반복적으로 설정할 수 있어, 코드 재사용성을 높이는 데 유용하다.

🤔 어디서 본 것 같은데?

객체배열을 생성하는 방법 중 하나이다! new 키워드와 함께 호출되며, 새로운 객체와 배열을 생성할 수 있다.

js
let obj = new Object();
let arr = new Array();

생성자 함수 사용 이유

동일한 구조의 객체를 여러 개 만들어야 할 때, 생성자 함수를 사용하면 중복된 코드를 줄일 수 있다.

일반 객체 리터럴 방식

js
const person1 = {
  name: "바켸빈",
  age: 20,
  pet: "dog",
  print: function () {
    console.log("안녕하세요" + this.name + "입니다.");
  },
};

const person2 = {
  name: "박혜빈",
  age: 30,
  pet: "cat",
  print: function () {
    console.log("안녕하세요" + this.name + "입니다.");
  },
};
  • 객체를 매번 복사해서 만드는 방식은 유지보수가 어렵고 중복이 많다.
  • 아래와 같이 생성자 함수를 사용하면 코드를 간단하게 작성할 수 있다.

생성자 함수 방식

js
function Person(name, age, pet) {
  this.name = name;
  this.age = age;
  this.job = job;
  this.print: function () {
    console.log("안녕하세요" + this.name + "입니다.");
  },
}
const person1 = new Person("바켸빈", 20, "dog")
const person2 = new Person("박혜빈", 30, "cat")

console.log(person1.name) // 바켸빈
console.log(person2.age) // 30
  • 생성자 함수는 보통 첫 글자를 대문자로 작성한다 Person
  • new 키워드를 사용하여 호출하면, 내부에서 this는 새롭게 만들어질 객체를 가리킨다.
  • this에 프로퍼티나 메서드를 정의하면, 각 인스턴스에 그 값이 복사된다.
  • 예시에서, Person 생성자 함수는 name, age, pet을 매개변수로 받아 객체를 생성하고, new Person(...)을 통해 만들어진 객체는 각각 person1, person2변수에 저장된다.

인스턴스(instance)란?

인스턴스란 생성자 함수(또는 클래스)를 이용해 실제로 만들어진 객체를 의미한다.

js
const person1 = new Person("바켸빈", 20, "dog");
// person1은 Person 생성자 함수의 인스턴스
  • Person은 일종의 설계도이고, person1은 그 설계도를 기반으로 만들어진 인스턴스(실체)다.
  • 여러 인스턴스를 생성하면 구조는 같고 내용만 다른 객체들을 효율적으로 만들 수 있다.

instanceof 인스턴스 판별

js
console.log(person1 instanceof Person); // true
  • instanceof를 활용해 person1Person의 인스턴스인지 판별을 할 수 있다.