728x90
반응형
super 키워드는 상위(부모) 객체의 함수를 호출할 때 사용됩니다.
문법
super([arguments]); // 부모 생성자 호출
super.functionOnParent([arguments]);
설명
클래스의 생성자(constructor)에서는 super 키워드 하나만 사용되거나 this 키워드가 사용되기 전에 호출되어야 합니다. 또한 super 키워드는 부모 객체의 함수를 호출하는데 사용될 수 있습니다.
클래스에서 super 사용하는 방법
class Parent {
constructor(age) {
this.name = "parent";
this.age = age;
}
sayMyName() {
console.log(this.name);
}
}
class Child extends Parent {
constructor(age) {
super(age);
this.name = "child";
}
}
const child = new Child(10);
child.sayMyName(); // child
this 키워드가 사용되기 전에 호출할 경우
클래스 생성자(constructor)에서 this 키워드를 사용하기 전에 super를 호출하지 않으면 아래와 같은 참조오류(ReferenceError)가 발생합니다.
class Child extends Parent {
constructor(value) {
// super 누락!
// 참조오류가 발생합니다. super가 먼저 호출되어야 합니다.
console.log(this);
}
}
ReferenceError
this hasn't been initialised - super() hasn't been called
static 메서드에서 super 호출
static 메서드에서도 super를 호출할 수 있습니다.
class Parent {
constructor(age) {
this.name = "parent";
this.age = age;
}
sayMyName() {
console.log(this.name);
}
static holy() {
return "holy";
}
}
class Child extends Parent {
constructor(age) {
super(age);
this.name = "child";
}
static holymoly() {
console.log(super.holy() + "moly!");
}
}
Child.holymoly(); // holymoly!
728x90
반응형
그리드형
'개발 > Javascript' 카테고리의 다른 글
자바스크립트 FileReader async/await 처리하는 방법 (Using the FileReader API in async functions) (0) | 2022.09.24 |
---|---|
자바스크립트 엑셀 csv 한글 깨짐 해결하는 방법 (Javascript export CSV encoding issue) (0) | 2022.09.24 |
[자바스크립트] replace 정규표현식 gi는 무엇을 의미할까? (0) | 2021.12.02 |
[자바스크립트] 강제로 UA(userAgent) 변경하는 방법 및 간단예시 (0) | 2021.11.18 |
자바스크립트 insertBefore() 사용법 및 간단 예제 (0) | 2021.11.03 |
이 포스팅은 쿠팡파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.