티스토리 뷰
# 02:40
super() => 부모 constructor를 호출하는데, 자식 constructor 내부에서만 사용 할 수 있다.
# 03:56
super.method() => 부모 클래스에 정의된 method를 호출한다.
화살표 함수에는 super가 없다.
class Rabbit extends Animal {
stop() {
setTimeout(() => super.stop(), 1000); // 1초 후에 부모 stop을 호출합니다.
}
}
화살표 함수의 super는 stop()의 super와 같아서 위 예시는 의도한 대로 동작한다.
[의도한 대로 동작하는 이유]
setTimeout메서드는 브라우저 환경에서 인수로 전달받은 함수를 호출할 때, this에 window를 할당한다.
이 문제를 해결하기 위해 래퍼(감싸는) 함수를 사용해 보통 때처럼 메서드를 호출하게 만들 수 있다.
그렇지만 setTimeout안에서 ‘일반’ 함수를 사용하면 에러가 발생한다.
// 래퍼함수가 없기 때문에 super는 window에서 stop()을 찾게된다.
// window에는 stop()이 없기 때문에 에러가 출력된다.
setTimeout(function() {super.stop()}, 1000);
[공부 좌표]
'이론 > JS' 카테고리의 다른 글
[JS] Q. 함수는 객체이다? (0) | 2021.02.25 |
---|---|
[JS] Object.create() (0) | 2021.02.24 |
[JS] Element.closest() (0) | 2021.02.23 |
[JS] 화살표 함수 (0) | 2021.02.19 |
[JS] 배열을 추가, 교체, 삭제 하는 방법 - Array.prototype.splice() (0) | 2021.02.19 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- [[Prototype]]
- offsetTop
- prototype 프로퍼티
- 점 표기법
- 불일치 연산자
- clinetTop
- property
- 객체의 프로퍼티
- 동치 연산자
- innerHeight
- 동등 연산자
- 부등 연산자
- outerHeight
- 프로퍼티
- constructor
- offsetHeight
- 일치 연산자
- scrollHeight
- scrollTop
- __proto__
- clientHeight
- javascript class
- @font-face
- 링크막기 #a링크막기
- 대괄포 표기법
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함