2. JavaScript 생성자 함수의 이해와 사용법

JavaScript 생성자 함수

JavaScript에서 객체를 생성하는 주요 방법 중 하나는 ‘생성자 함수’를 이용하는 것입니다. 이 포스트에서는 JavaScript의 생성자 함수에 대해 자세히 살펴보고, 어떻게 이를 사용하는지 실제 코드 예제를 통해 살펴보겠습니다.

1. JavaScript 생성자 함수란?

생성자 함수는 JavaScript에서 객체를 생성하고 초기화하는 역할을 합니다. 함수 이름의 첫 글자는 대문자로 시작하는 것이 일반적입니다. new 연산자와 함께 사용되어 객체를 생성하고 초기화하는데, 이때 해당 함수는 생성자 함수로 동작합니다.

<code>function Car(make, model, year) {
  this.make = make;
  this.model = model;
  this.year = year;
}

const car1 = new Car('Tesla', 'Model S', 2023);
console.log(car1);
</code>

이 코드는 Car라는 생성자 함수를 정의하고, 새로운 Car 객체인 car1를 생성합니다. Car 생성자 함수는 3개의 매개변수를 받아, 새로 생성된 객체의 속성을 초기화합니다.

2. JavaScript 생성자 함수의 특징

생성자 함수는 일반 함수와 마찬가지로 작동하지만, 몇 가지 중요한 차이점이 있습니다.

  1. 생성자 함수는 대문자로 시작합니다: 이는 JavaScript 개발자 사이에서의 관습이며, 일반 함수와 구별하기 위한 방법입니다.
  2. 생성자 함수는 new 연산자와 함께 사용됩니다: new 연산자를 통해 생성자 함수를 호출하면 새로운 객체가 생성되고, 이 객체를 초기화하는 데 사용됩니다.
  3. this 키워드는 생성된 객체를 가리킵니다: 생성자 함수 내에서 this 키워드를 사용하면, 생성된 객체를 참조합니다. 이를 통해 객체의 속성을 설정하거나 메소드를 정의할 수 있습니다.

3. JavaScript 생성자 함수의 사용

이제 생성자 함수를 어떻게 사용하는지 실제 코드를 통해 살펴보겠습니다.

<code>function Employee(name, position, yearHired) {
  this.name = name;
  this.position = position;
  this.yearHired = yearHired;

  this.yearsExperience = function() {
    const currentYear = new Date().getFullYear();
    return currentYear - this.yearHired;
  }
}

const emp1 = new Employee('John Doe', 'Software Engineer', 2019);
console.log(emp1.yearsExperience());
</code>

위의 코드는 Employee라는 생성자 함수를 정의하고, 새로운 Employee 객체 emp1을 생성하며, 객체의 yearsExperience 메소드를 호출하는 과정을 보여줍니다. Employee 생성자 함수는 세 개의 매개변수를 받고, 이를 통해 객체의 속성을 초기화합니다. 또한 yearsExperience라는 메소드를 통해 재직 기간을 계산할 수 있습니다.

생성자 함수는 JavaScript에서 객체를 생성하고 초기화하는 데 사용되는 효과적인 방법입니다. new 키워드와 함께 사용되며, 객체의 속성과 메소드를 초기화하는 데 this 키워드를 사용합니다. 이를 통해 동일한 속성을 가진 여러 객체를 손쉽게 생성할 수 있으며, 코드의 재사용성을 높일 수 있습니다.

하지만 생성자 함수만이 JavaScript에서 객체를 생성하는 유일한 방법은 아닙니다. Object.create 메소드, 클래스, 리터럴 방식 등도 있으니, 각 방식의 장단점을 이해하고 상황에 맞게 선택하는 것이 중요합니다.

오늘의 포스트에서는 JavaScript 생성자 함수[공식문서]에 대해 알아보았습니다. JavaScript의 다양한 객체 생성 방법 중 하나를 배우셨기를 바랍니다. 다음 번에는 다른 객체 생성 방법에 대해 더 자세히 알아보겠습니다[블로그]. 끝까지 읽어주셔서 감사합니다.