constructor : 함수 선언문, 함수 표현식, 클래스
non-constructor : 메서드, 화살표 함수
constructor
// 일반 함수 정의: 함수 선언문, 함수 표현식
function foo(){};
const bar = function(){};
// 프로퍼티 값으로 할당된 것은 일반 함수로 정의된다.
const baz = {
x : function(){}
};
// 일반 함수로 정의된 것은 constructor함수로 생성할 수 있다.
new foo();
new bar();
new baz.x();
non-constructor
const arrow = () =>{
};
//new arrow(); arrow is not a constructor
// 메서드 축약 표현만 메서드로 인정한다.
const obj = {
x() {}
};
//new obj.x(); obj.x is not a constructor
함수를 일반 함수로 호출하면 내부 메서드인 Call이 호출되고, 생성자 함수로써 호출하면 Constructor가 호출된다.
따라서 non-constructor함수 객체를 생성자 함수로써 호출시 에러가 발생한다.
'WEB > JS' 카테고리의 다른 글
[JS] 프로토타입 체인 (1) | 2023.12.03 |
---|---|
[JS] 프로토타입 (1) | 2023.12.02 |
[JS] 생성자 함수에 의한 객체 생성 (0) | 2023.11.28 |
[JS] 프로퍼티 어트리뷰트 (0) | 2023.11.27 |
[JS] let, const키워드와 블록 레벨 스코프 (1) | 2023.11.27 |