일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코드스테이츠
- vercel
- 자료구조
- redux
- useState
- 생활코딩
- 스택
- 자바스크립트
- React
- html
- 큐
- 운영체제
- 백준
- mysemester
- 해시테이블
- UX
- web
- Next.js
- 카카오
- level1
- 회고
- 프로그래머스
- superstarjypnation
- REST_API
- Til
- CSS
- javascript
- 30daysdowoonchallenge
- UI
- 프로토타입
- Today
- Total
데굴데굴
TIL: 2022-09-22 본문
⚙️ 오늘 배운 주제
객체 지향 프로그래밍
🐹 오늘의 기분
오전에는 어제부터 이어졌던 블로깅 과제를 마저 하고 오후에는 페어분과 새로운 과제를 해결했다. 생각보다 빨리 끝나서 이런저런 이야기도 나눴다. 재밌었다! 혼자 하는 것보다 배우는 게 훨씬 많았다. 어제는 프로토타입을 완전히 이해 못하고 있었는데 오늘 아침에 블로깅 과제를 하면서 뭔가 좀 틀이 잡힌 느낌이었다. 여러 자료를 찾아보고 예시 코드도 직접 작성해보는게 도움이 된 것 같다.
그리고 드디어 주말에 매장에서 계약했던 의자가 배송되었다. 전 의자보다 훨씬 편하다. 허리도 덜 아프고! 조립하는 것도 재밌었음.
내일은 오늘보다 더 어려운 걸 하는 것 같던데 심히 걱정이다. 게다가 3일 동안 진행되는 유닛이라 벌써 만만치 않음이 느껴짐... 마음 단단히 먹고 해야지 화이팅
🗝 키워드
프로토타입 체인, 상속, 디폴트 파라미터
🗣 스스로에게 설명
프로토타입 체인에 관한 설명은 아래 블로깅 과제로 대체한다.
<JavaScript> 프로토타입 체인
다른 예시를 들어보려했는데 너무 헷갈림..! 학습하면서 자주 써왔던 Array로 설명해보자 Array로 이해해보기 nums라는 배열을 리터럴 방식으로 정의했다. (리터럴?) let nums = [4, 5, 6]; nums 자체에는 메
haruisshort.tistory.com
한 클래스에서 다른 클래스를 상속받기 위해 extends를 사용한다.
super()을 사용하면 부모 클래스의 생성자 함수에 접근할 수 있다.
super.~~ 이렇게 쓰면 부모 클래스의 메소드에 접근할 수 있다.
// Human 클래스
class Human {
constructor(name, age, gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
sleep() {
return this.name + '은(는) 이만 자러 갑니다.';
}
}
// Human을 상속받는 Employee 클래스
class Employee extends Human {
constructor(name, age, gender, job) {
// 이름, 나이, 성별은 Human에서 상속 받아옴
super(name, age, gender)
// Employee 클래스에만 있는 속성 job
this.job = job;
}
goForWork() {
return this.name + '은(는) 출근합니다..';
}
goHome() {
return this.name + '은(는) 퇴근합니다!!';
}
sleep() {
let status = super.sleep();
return '집에 돌아온 ' + status;
}
}
Human 클래스를 이용해 minsoo라는 인스턴스 객체를 생성했다.
여기서 sleep() 메소드를 쓰면 기본 문구가 나온다.
// 민수
let minsoo = new Human('민수', 25, 'male');
minsoo.sleep(); // '민수은(는) 이만 자러 갑니다.'
이번에는 Human 클래스를 상속받은 Employee 클래스를 이용해 chulsoo라는 인스턴스 객체를 생성했다.
여기서 sleep() 메소드를 쓰면 Employee 클래스에서 바꿨던 문구가 출력된다.
// 철수
let chulsoo = new Employee('철수', 25, 'male', 'Developer');
chulsoo.goForWork(); // '철수은(는) 출근합니다..'
chulsoo.goHome(); // '철수은(는) 퇴근합니다!!'
chulsoo.sleep(); // '집에 돌아온 철수은(는) 이만 자러 갑니다.'
🛠 질문 만들기
- 위의 코드에서
Human.prototype
과minsoo.__proto__
는 같은가? 다르다면 그 이유는? - 그렇다면
Human.prototype
과chulsoo.__proto__
는 같은가? 다르다면 그 이유는? - 클래스 정의 시 다른 클래스에서 상속을 받고 싶다면 어떤 키워드를 써야하는가?
'Lesson > TIL' 카테고리의 다른 글
TIL: 2022-09-26 (0) | 2022.09.26 |
---|---|
TIL: 2022-09-23 (0) | 2022.09.23 |
TIL: 2022-09-21 (0) | 2022.09.21 |
TIL: 2022-09-20 🤯 (0) | 2022.09.20 |
TIL: 2022-09-16, 첫 솔로 프로젝트 짤막한 회고 (0) | 2022.09.16 |