생성자
생성자란 앞에 new
연산자가 붙은 함수를 의미하며 동일한 프로퍼티와 메소드를 가진 다수의 인스턴스를 만들 수 있습니다.
new Object()
, new Array()
등등 자바스크립트의 내부적으로 존재하는 내장 생성자 및 직접 새로운 타입을 만들 수도 있습니다.
function MyOwn() { }
var myObj = new MyOwn();
console.log(myObj instanceof MyOwn); // true
console.log(myObj.constructor === MyOwn); // true
new 연산자의 역활
new
연산자가 붙으면 함수의 this
는 인스턴스를 참조하게 되며, new
연산자가 자동으로 인스턴스를 반환하기 때문에 함수안에 return
연산자도 필요 없어지게 됩니다.
※ 만약 생성자 함수에 new 연산자가 없다면
- 생성자 함수는 단순히 평범한 함수일 뿐이며,
this
는 전역객체를 가르키게됩니다
function Food(name) {
console.log(this.constructor)
this.name = name;
this.smell = function () {
console.log(this.constructor);
}
}
var myFood1 = new Food("특재 파스타"); // function Food(name) {...}
var myFood2 = Food("특재 파스타"); // function Window() {...}
참고
'JS > JS 핵심 개념' 카테고리의 다른 글
JS 프로토타입 상속 & subtype, supertype (0) | 2023.03.13 |
---|---|
JS 프로토타입 (0) | 2023.03.13 |
JS closure 함수 (0) | 2023.03.13 |
JS this 개념 및 활용 (0) | 2023.03.03 |
JS 타입 이해 (0) | 2023.03.03 |