일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- jsx
- math.pow
- falsy
- CLONE
- ReactDOM
- props
- javascirpt
- 스택
- JavaScript
- 함수표현식
- 함수선언식
- 페어프로그래밍
- State
- 수도코드
- 자료구조
- stack
- render
- while
- pair
- Til
- 제곱함수
- ES6
- 객체지향프로그래밍
- github
- SUPER
- reduce
- react
- 깃헙
- pseudocode
- 각자리수
Archives
- Today
- Total
강백호같은개발자
TIL(20/06/18) ES6 : class와 super in JavaScript 본문
ES6 : class와 super in JavaScript
ES5에서 클래스를 만들고 상속받는 상황을 코드로 한번 보자.
var Human = function(name){
this.name = name;
}
Human.prototype.sleep = function(){
console.log(this.name + ' is sleeping...');
};
var steve = new Human('steve');
var Student = function(){
Human.call(this, name); // Human.apply(this. arguments)
}
Student.prototype = Object.create(Human.prototype);
Student.prototype.constructor = Student;
Student.prototype.learn = function(){};
var john = new Student('john');
john.learn();
john.sleep(); //john is sleeping
Human과 Student라는 두 클래스가 있고,
Human이 부모 클래스, Student는 상속을 받는 자식 클래스로 만들고 싶다.
Student의 인스턴스인 John은 learn 도 가능하고 sleep도 가능하고 싶다.
1. Human의 프로토타입을 카피해서 새로운 (객체)프로토타입을 만들어서 Student의 프로토타입에 할당한다.
2. 그리고 constructor가 꼬이기 때문에 명확하게 Student의 constructor 명시해주기.
3. 그리고 Human이 받지 못하는 실행컨택스트를 call로 넘겨받기.
이것을 ES6의 문법으로 보자.
class Human {
constructor(name){
this.name = name;
}
sleep(){
console.log(`${this.name} is sleeping`)
}
}
var steve = new Human('steve');
class Student extends Human{
constructor(name){
super(name)
}
learn(){
console.log(`${this.name} is learning`)
}
}
var john = new Student('john');
john.learn();
john.sleep();
extends 라는 키워드로 Object.creat(부모프로토타입)과 constructor 재지정을 대체하고,
call을 super로 대체한 것이다.
extends 와 super 를 잘 기억해둬야겠다.
ES6 : class와 super in JavaScript
'- 배움은 개발을 거들뿐(TIL)' 카테고리의 다른 글
React JSX (0) | 2020.07.08 |
---|---|
TIL(20/06/17) Prototype Chain 프로토타입 체인 in JavaScript (0) | 2020.06.18 |
TIL(20/06/17) 객체 지향 프로그래밍 Object Oriented Programming(OOP) in JavaScript (0) | 2020.06.17 |
JavaScript 함수선언식과 함수표현식 (0) | 2020.06.13 |
깃헙으로 페어 프로그래밍하기 (0) | 2020.06.08 |
Comments