기본적인 생성자 함수의 동작
function MyClass(name) {
// this 객체는 자동으로 생성됩니다
this.name = name;
// return this; // 명시적으로 작성하지 않아도 암묵적으로 반환됩니다
}
const instance = new MyClass('Alice');
console.log(instance.name); // Alice
명시적으로 다른 객체를 반환하는 경우 객체를 반환하는 경우 만약 생성자 함수에서 명시적으로 객체를 반환하면, 그 객체가 반환된다.
function MyClass(name) {
this.name = name;
return {}; // 명시적으로 빈 객체를 반환
}
const instance = new MyClass('Alice');
console.log(instance); // {}
console.log(instance.name); // undefined
원시 값을 반환하는 경우 생성자 함수가 원시 값을 반환하면, 해당 반환 값은 무시되고 this가 반환된다
function MyClass(name) {
this.name = name;
return 'hello'; // 원시 값을 반환
}
const instance = new MyClass('Alice');
console.log(instance.name); // Alice
console.log(instance); // MyClass { name: 'Alice' }
결론 생성자 함수에서 명시적으로 객체를 반환하면: 그 객체가 반환된다. 생성자 함수에서 명시적으로 원시 값을 반환하면: 반환 값이 무시되고 암묵적으로 this가 반환된다. 이는 JavaScript의 생성자 함수의 동작 방식이다. 생성자 함수는 기본적으로 새로운 객체를 생성하고, 그 객체를 반환하도록 설계되어 있다.