6. 상속, extends 키워드, 상속 구조, 메소드 오버라이딩
이번에는 상속을 배웠다. 자바스크립트에서 상속을 어떻게 하는 것인지 배운 셈이다. 키워드는 extends를 이용해 준다.
또한 상속에서는 클래스라는 개념을 사용할 수밖에 없다. 클래스를 명명해 주고 extends 키워드를 이용해서 상속을 구현해 주면 된다.
(참고로 oop라는 건 객체 지향 프로그램의 줄임말이다.)
이를 기반으로 메소드 오버라이딩을 구현할 수 있다.
오버라이딩(overriding)이란 상속 관계에 있는 부모 클래스에서 이미 정의된 메소드를 자식 클래스에서 같은 시그니쳐를 갖는 메소드로 다시 정의하는 것이다.
조건은 다음과 같다.
1. 오버라이딩이란 메소드의 동작만을 재정의하는 것이므로, 메소드의 선언부는 기존 메소드와 완전히 같아야 한다.
하지만 메소드의 반환 타입은 부모 클래스의 반환 타입으로 타입 변환할 수 있는 타입이라면 변경할 수 있다.
2. 부모 클래스의 메소드보다 접근 제어자를 더 좁은 범위로 변경할 수 없다.
3. 부모 클래스의 메소드보다 더 큰 범위의 예외를 선언할 수 없다.
7. super 키워드, constructor 호출
super 키워드를 배웠다. 또한 여러 가지 방식으로 생성자를 호출할 수 있다.
상속을 통해 자식클래스에서 부모 클래스의 값을 가져다 사용할 수 있다.
부모 클래스에게 상속받아 자식클래스를 만들었는데 자식클래스에서 속성을 추가하려고 할 때 constructor 재정의가 필요하게 된다.
이러한 과정에서 중복되는 코드가 발생해 error 발생확률이 증가하며 메모리 낭비 등 비효율적인 낭비가 생기게 된다.
이러한 부분을 super로 해결하는 것.
super 키워드 사용방법
super()
부모클래스의 생성자가 호출
super.
부모의 메소드에 접근
8. Built-in 오브젝트 상속, Object 상속, Image 오브젝트 상속, Audio 오브젝트 상속
상속은 이미지도 가능하고 오디오도 가능하다. 코드적인 부분은 비슷하다.
그리고 빌트인 객체에 대해 배웠다.
표준 빌트인 객체란 ECMAScript 사양에 정의된 객체를 말하며, 애플리케이션 전역의 공통 기능을 제공한다.
표준 빌트인 객체는 ECMAScript 사양에 정의된 객체이므로 자바스크립트 실행 환경(브라우저 또는 Node.js 환경)과 관계없이 언제나 사용할 수 있다.
표준 빌트인 객체는 전역 객체의 프로퍼티로서 제공된다. 따라서 별도의 선언 없이 전역 변수처럼 언제나 참조할 수 있다.
9. this 참조, Generator
this에 대해 배웠다. this에 대한 것은 기존에 배워둔 페이지가 있다.
https://codingworld2002.tistory.com/94
(this는 결국 "호출한 놈"이라는 것이 포인트)
제너레이터
일반 함수는 하나의 값(혹은 0개의 값)만을 반환한다.
하지만 제너레이터(generator)를 사용하면 여러 개의 값을 필요에 따라 하나씩 반환(yield)할 수 있다.
제너레이터와 이터러블 객체를 함께 사용하면 손쉽게 데이터 스트림을 만들 수 있다.
사용하고 싶으면 " * "을 이용해 주면 된다.
function* generateSequence() {
yield 1;
yield 2;
return 3;
}
let generator = generateSequence();
let one = generator.next();
alert(JSON.stringify(one)); // {value: 1, done: false}
(코드는 위처럼 만들 수 있다.)
'카카오_구름 > 자바스크립트 심화' 카테고리의 다른 글
5. [Proxy Trap 1~4챕터] 자바스크립트 완전 끝내기: ES6+ 심화 (1) | 2024.09.08 |
---|---|
4. [Proxy 1~4챕터] 자바스크립트 완전 끝내기: ES6+ 심화 (0) | 2024.09.07 |
2. [Class 4~5챕터] 자바스크립트 완전 끝내기: ES6+ 심화 (0) | 2024.09.05 |
1. [Class 1~3챕터] 자바스크립트 완전 끝내기: ES6+ 심화 (0) | 2024.09.04 |
0. 자바스크립트 완전 끝내기: ES6+ 심화 [강좌 소개, 범위] (0) | 2024.09.02 |