new
연산자와 함께 호출해야만 생성자 함수
로 동작new
연산자 없이 호출하게 될 경우, 일반 함수
로 동작new
연산자와 함께 생성자 함수를 호출하면 자바스크립트 엔진은 암묵적으로 인스턴스를 생성하고 인스턴스를 초기화한 뒤, 암묵적으로 인스턴스를 반환함this
가 아닌, 다른 값을 반환하는 것은 생성자 함수의 기본 동작을 훼손 → 생성자 함수 내부에서 return
문은 반드시 생략function Person(name, age) {
this.name = name;
this.age = age;
this.sayHello = () => {
return `Hello, ${this.name}`;
};
}
const surim = new Person('surim', 100);
console.log(surim);
// Person { name: 'surim', age: 100, sayHello: [λ] }
console.log(surim.sayHello());
// Hello, surim
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
sayHello() {
return `Hello, ${this.name}`;
}
}
const surim = new Person('surim', 100);
console.log(surim);
// Person { name: 'surim', age: 100, sayHello: [λ] }
console.log(surim.sayHello());
// Hello, surim
new
연산자 없이 호출하면 일반 함수로서 호출되기 때문에 별도 처리 필요extends
, super
키워드 미제공strict mode
가 지정되지 않음new
연산자 없이 호출하면 에러 발생extends
, super
키워드 제공strict mode
가 지정되어 실행되며 strict mode
해제 불가위의 내용은 생성자 함수와 클래스를 공부하며 개인적으로 정리한 내용입니다.
잘 읽었습니다. 감사합니다 :)