Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 자바스크립트 기본 문법
- 랜섬웨어
- 보안뉴스
- 보안뉴스 요약
- 깃허브
- 보안뉴스요약
- 보안뉴스 한줄요약
- javascript
- 카카오프로젝트
- 파이썬
- 자바스크립트
- 자바스크립트 API
- php
- 자바스크립트 node
- numpy
- 자바스크립트 jQuery
- 자바스크립트 prototype
- 다크웹
- Oracle SQL
- ES6
- oracle db
- GIT
- 카카오프로젝트 100
- 오라클
- 카카오프로젝트100
- 자바스크립트 객체
- python
- 자바스크립트 element api
- 보안뉴스한줄요약
- oracle
Archives
- Today
- Total
FU11M00N
[ ES6 Script ] JS class & class 상속 본문
기존 자바스크립트에서 객체지향 구현시 function 이 생성자였습니다.
하지만
function 으로 하다보니 표현력이 떨어지고, 코드가 점점 복잡해져서
ES6부터는 class가 생겨났습니다.
1. class
class Study{
constructor(name){
this.name = name;
}
getName(){
return this.name;
}
}
let study = new Study("풀문");
console.log("study.getName();" + study.getName());
class 키워드를 이용해서 클래스를 정의하고 Study 클래스를 선언했습니다.
생성자 함수는 constructor 라는 이름으로 정의되어있는데,
이는 클래스가 생성될때 기본적으로 호출되는 함수입니다.
클래스는 new 키워드로 객체를 만들어 사용합니다.
객체를 생성할 때 전달한 인자인 "풀문" 은 생성자의 파라미터로 전달되어
name 을 초기화 하고 getName 메소드를 이용해 name 을 출력시킵니다.
2. class 상속 "extends"
다른 객체 지향 언어들과 마찬가지로 extends 키워드를 이용하여 클래스를 상속받을 수 있습니다.
class Study{
constructor(name){
this.name = name;
}
getName(){
return this.name;
}
}
let study = new Study("풀문");
console.log("study.getName();" + study.getName());
class Coding extends Study{
constructor(name){
super(name);
}
}
let subject = new Coding('coding');
console.log("subject instanceof Coding : "+ (subject instanceof Coding));
console.log("subject instanceof Study : "+ (subject instanceof Study));
console.log("subject.getName() : "+ subject.getName());
자바스크립트에서 자식 클래스를 초기화 하려면 먼저 부모 클래스의 생성자를 호출해야합니다.
그래서 자식클래스의 생성자에 super 메소드를 사용해 부모 클래스의 생성자를 호출해야합니다.
위의 예시에서 알 수 있는 것은,
subject 가 Coding 의 instance 이면서 Coding 이 Study 의 자식이므로
subject 가 Study 의 자식인지에 대한 여부에서 true 가 나온 것입니다.
그렇기 때문에 getName 이라는 메소드를 사용할 수 있었던 것을 알 수 있습니다.
class 키워드는 내부적으로 함수처럼 동작합니다.
'Programming > Javascript' 카테고리의 다른 글
[ ES6 Script ] JS 즉시 실행 함수 (0) | 2021.02.16 |
---|---|
[ ES6 Script ] JS 화살표함수 와 this (0) | 2021.02.16 |
[ ES6 Script ] JS 비구조화 할당(Destructuring) (0) | 2021.02.15 |
[ ES6 Script ] JS ES5,ES6 템플릿 문자열 표현식 과 백틱 (0) | 2021.02.15 |
[ ES6 Script ] JS let 참조에러 과 TDZ (Temporal Dead Zone) (0) | 2021.02.15 |
Comments