티스토리 뷰
ES5 와 ES6 비교
ES5 프로토타입
// 생성자
function Cat(name, age) {
this.name = name;
this.age = age;
}
Cat.prototype.feeding = function() {
return `${this.name}가 츄르를 먹습니다.`
}
// 인스턴스 생성
let cat = new Cat('금동이', 9);
console.log(cat.feeding()); // 금동이가 츄르를 먹습니다.
ES6 클래스
class Cat {
//생성자
constructor(name, age) {
this.name = name;
this.age = age;
}
feeding() {
return `${this.name}가 츄르를 먹습니다.`
}
}
// 인스턴스 생성
let cat = new Cat('라떼', 1);
console.log(cat.feeding()); // 라떼가 츄르를 먹습니다.
- 클래스 문법은 자바에서 보던 클래스와 매우 유사하다. 다만 자바는 생성자의 이름을 클래스 이름과 동일하게 하여야 하지만 자바스크립트는 constructor로 고정되어 있고 클래스 안에 한 개만 존재할 수 있다.
- 생성자 내에서 this는 클래스가 생성할 인스턴스를 가리킨다!
클래스 메서드
class Calculator {
add(x, y) {
return x + y;
}
subtract(x, y) {
return x - y;
}
}
let calc = new Calculator();
calc.add(1, 3); // 4
- 클래스 내에서 메서드를 정의!
const method1 = 'divide';
class Calculator {
add(x, y) {
return x + y;
}
subtract(x, y) {
return x - y;
}
[method1](x, y) {
return x / y;
}
}
- 객체 리터럴 문법과 비슷하게 대괄호 안에 표현식을 넣어서 사용할 수도 있다.
Getter / Setter
class Product {
constructor() {
this.price = 0;
}
get price() {
return this.price;
}
set price(newPirce) {
this.price = newPrice;
}
}
let iPad = new Product();
iPad.price = 10000; // set이 없다면 에러
iPad.price; // 10000
- 메서드 이름 앞에 get, set을 붙여줌으로써 정의할 수 있음
- Getter는 Product.price()를 사용해서 프로퍼티를 읽으려고 할 때 실행
- Setter는 Product.price = newPrice; 로 값을 할당할 때 실행
반응형
'개발냥이 > 자바스크립트(Javascript)' 카테고리의 다른 글
[자바스크립트] 동기와 비동기(feat. 콜백 함수) (0) | 2023.04.18 |
---|---|
[JavaScript] 프로토타입(Prototype) (0) | 2023.03.15 |
[프로젝트] 아가리 스테이츠(질문 게시판 만들기) (0) | 2023.03.12 |
[JS] 클로저(Closure) (0) | 2023.03.02 |
[JS] 원시 자료형과 참조 자료형(얕은 복사와 깊은 복사) (0) | 2023.03.02 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 이분탐색
- JPA
- 백준
- 자바
- 자바bfs
- 프로그래머스
- 자바dp
- 자바트리
- java
- CS
- dfs
- DP
- BFS
- 자바스크립트
- 정렬
- 타입스크립트
- JavaScript
- 스프링부트
- Nest
- SQL
- 리액트
- 알고리즘
- Comparator
- 형변환
- SQLD
- Queue
- Algorithm
- Spring
- 해시맵
- 스프링
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함