extends()
옛날 개발자들이 extends라는 문법을 만들었다.
이미 있는 class와 유사한 class를 하나 더 만들고 싶을때 사용한다.
(복사와 비슷하지만 정확히 말하면 상속하는것. )
그냥 class하나 더 만들어도 되지만, 복사/상속 할 값이 많은 경우 extends 로 만드는 것이 더 낫기 때문에 사용..
class 할아버지{
constructor (name, name2){
this.성 = 'kim';
this.이름 = name;
this.이름2 = name2;
}
saha(){
console.log('안녕하시렵니까 할아버지');
}
};
let 할아버지1 = new 할아버지('만덕', '만득');
console.log(할아버지1);
//할아버지 라는 class와 비슷하게 하나 더 만들고 싶은데, 나이 속성 추가하고 싶음
class 아버지 extends 할아버지 {
constructor(name, name2){
//this.나이 = 50 을 하면 오류난다.
super(name, name2)
this.나이 = 50;
}
saha(){
console.log('안녕하시렵니까 아버지');
super.saha();
}
}
let 아버지1 = new 아버지('만수','즉흥');
아버지1.saha();
console.log(아버지1)
아버지 class 에서 처음에 this.나이 = 50 이 오류나는 이유는 뭘까
extends 해서 만든 class는 this를 바로 사용할 수 없다. super() 사용후 써야함.
super( )
1. constructor 안에서 쓰면 부모 class의 constructor 가져옴
2. prototype 함수 안에서 쓰면 부모 class의 prototype 가져옴
super(name, name2) 이 코드는 즉 이말이다.
extends 로 상속중인 부모 class 의 constructor 받아 가져다 주세요
super를 사용할 때에 부모 요소에 파라미터가 있다면
똑같이 자식요소의 constructor의 괄호 안,
그리고 super의 괄호 안에 그 파라미터를 넣어주기.
class 아버지 안에 saha(){} 안에 super.saha() 는??
부모 class의 함수를 가져와서 쓰고 싶을때는 이렇게씀.
(2. super() 는 prototype 안에서 사용되면 부모 class의 prototype을 의미하기도 함. )
'JS (Java Script)' 카테고리의 다른 글
.js 파일 연결하기 (src) (export, import) (0) | 2023.09.12 |
---|---|
object 데이터 다룰때 함수 사용하기. (getter, setter) (0) | 2023.09.07 |
class ES6 문법 상속기능 (0) | 2023.09.07 |
Object.create() ES5 문법. 상속기능 구현. (0) | 2023.09.07 |
프로토타입 ( prototype ) 과 __proto__ 차이 명확하다 // 상속 구현하기 (0) | 2023.09.07 |