남과 같이 해선 남 이상이 될 수 없다.

JavaScript

[Javascript] constructor 와 non-constructor

맨동 2022. 2. 21. 20:07
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