티스토리 뷰

❓궁금증 

생성자 함수는 일반 함수랑 구문이 동일한데 

왜 생성자 함수와 일반 함수와 구분지어 부를까? 

구문이 동일하지만 new 키워드가 있을 때만 일반 함수를 생성자 함수라고 부르는 것인가? 

1. 구문적 동일성: 생성자 함수와 일반 함수는 정의할 때 구문적으로 차이가 없습니다. JavaScript에서는 모든 함수가 잠재적으로 생성자 함수가 될 수 있습니다.

2. new 키워드의 역할: 함수가 new 키워드와 함께 호출될 때만 해당 함수는 생성자 함수로서 동작합니다. 이때 새로운 객체가 생성되고, 함수 내의 this가 이 새 객체를 가리키게 됩니다.

3. 호출 방식에 따른 구분:
- new 키워드와 함께 호출: 생성자 함수로 동작
- new 키워드 없이 호출: 일반 함수로 동작

 

예제: 

function User(name) {
  this.name = name;
  this.sayHello = function() {
    console.log(`안녕하세요, ${this.name}입니다.`);
  };
}

// 생성자 함수로 사용
const user1 = new User("Alice");
user1.sayHello(); // 출력: 안녕하세요, Alice입니다.

// 일반 함수로 사용
User("Bob"); // this는 전역 객체를 가리키거나 undefined가 됩니다 (strict mode에서)