728x90
자바스크립트 엔진은 함수 정의를 평가하여 함수 객체를 생성할 때 함수 정의 방식에 따라 함수를 constructor 와 non-constructor 로 구분한다.
constructor : 함수 선언문, 함수 표현식, 클래스
non-constructor : 메서드(ES6 메서드 축약 표현), 화살표 함수
밑의 예제로 보면 메서드를 인정하는 범위를 구분할 수 있다.
// 일반함수 정의: 함수선언문, 함수표현식
function one() {}
const two = function() {};
// 프로퍼티 x의 값으로 할당된 것은 일반 함수로 정의된 함수와 같다. 메서드로 인정X
const test = {
x: function() {}
};
new one(); // -> one {}
new two(); // -> two {}
new test.x(); // -> x {}
// 화살표 함수 정의
const arrow = ()=>{};
new arrow(); // TypeError: arrow is not a constructor
// 메서드 정의
const obj = {
x() {}
};
new obj.x(); // TypeError: obj.x is not a constructor
728x90
'JavaScript' 카테고리의 다른 글
[Javascript] this 간단 정리 (0) | 2022.03.16 |
---|---|
[Javascript] 일급 객체 (0) | 2022.02.20 |
[Javascript] 스코프 체인과 렉시컬 스코프 (0) | 2022.02.18 |
[Javascript] 스코프 Scope (0) | 2022.02.14 |
[Javascript] Reduce 메서드란 ? (0) | 2022.01.25 |