어라라 왜 VegasTracker는 함수인데
object로 타입오브가 뜨는거지??
그건 생성자 함수를 사용해서 그렇다!
정규식 만들기
this 는 달라진다
함수 호출 방식 | this 가 가리키는 값 |
일반 함수로서 호출 | 전역 객체 |
메서드로서 호출 | 메서드를 호출한 객체 |
생성자 함수로서 호출 | 생성자 함수가 미래에 생성할 인스턴스 |
내부 메서드 [[Call]] 을 갖는 함수 객체 --> callable : 호출 할 수 있는 객체, 함수,
내부 메서드 [[Construct]]를 갖는 함수 객체 --> constructor : 생성자 함수, 호출 할 수 있는 함수
non-constructor : 객체를 생성자 함수로 호출 할 수 없는 함수.
5) 콘스트럭톨, 논-콘스트럭톨
constructor : 함수 선언문, 함수 표현식, 클래스
non-constructor : 메서드 , 화살표 함수
6) new 연산자
일반 함수?
생성자 함수?
특별한 형식적 차이는 없다.
new 연산자와 함께 함수를 호출하면,
해당 함수는 생성자 함수로 동작한다.
내부 메서드 [[Call]]이 호출되는 것이 아니라
[[Constructor]]가 호출된다.
일반 함수 | 생성자 함수 |
this --> 전역 객체 window를 가리킨다 | this --> 생성자 함수가 생성할 인스턴스를 가리킨다 |
radius, getDiameter 메서드는 전역 객체의 프로퍼티, 메세드가 됨 | 생성자 함수의 프로퍼티와 메서드가 됨 |
첫문자가 소문자 | 첫문자가 대문자 |
7) new.target
생성자 함수가 new 연산자 없이 호출 되는 것을 방지.
ES6에서 제공.
new.target 은 함수 자신을 가리킨다: new 연산자와 함께 + 생성자 함수 호출
'자바스크립트-스터디[2021-10-05~완료]' 카테고리의 다른 글
ajax (0) | 2021.11.11 |
---|---|
18 함수와 일급 객체 (0) | 2021.11.01 |
16 프로퍼티 어트리뷰트 (0) | 2021.10.30 |
[4주차] 15장 let, const 키워드와 블록 레벨 스코프 (0) | 2021.10.27 |
13 스코프 (0) | 2021.10.19 |