Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- UX
- 회고
- 자바스크립트
- superstarjypnation
- 큐
- React
- 카카오
- vercel
- redux
- 코드스테이츠
- 백준
- 자료구조
- html
- 프로토타입
- 스택
- CSS
- javascript
- 30daysdowoonchallenge
- 해시테이블
- web
- 생활코딩
- 프로그래머스
- Next.js
- useState
- mysemester
- 운영체제
- level1
- Til
- UI
- REST_API
Archives
- Today
- Total
데굴데굴
<JavaScript> 클래스와 인스턴스 본문
클래스(class)는 일종의 청사진이고, 청사진을 이용해 만든 새로운 객체가 인스턴스(instance)이다.
코드로 보기
// ES6 문법을 기반으로 작성한 Student 클래스
class Student {
constructor(name, grade, gender) {
this.name = name;
this.grade = grade;
this.gender = gender;
}
study() {
console.log(this.name + '가 공부를 시작합니다.');
}
}
// 클래스를 이용해 생성한 인스턴스
let chulsoo = new Student('김철수', 3, 'male');
chulsoo; // Student {name: '김철수', grade: 3, gender: 'male'}
chulsoo.study(); // 김철수가 공부를 시작합니다.
let younghee = new Student('김영희', 3, 'female');
younghee; // Student {name: '김영희', grade: 3, gender: 'female'}
younghee.study(); // 김영희가 공부를 시작합니다.
인스턴스
chulsoo
와 younghee
는 모두 클래스를 이용해 생성한 인스턴스 객체이다.
각 인스턴스에서 클래스에 정의된 메소드(여기서는 study)를 사용할 수 있다.
생성자 함수 constructor()
constructor()
는 인스턴스 객체를 초기화해주는 함수이다.
새롭게 생성될 인스턴스 객체 속 키의 값을 지정할 수 있다.
constructor는 한 클래스에서 한 번만 쓸 수 있다.
여러 번 쓰면 SyntaxError가 발생한다.
특징
클래스명은 대문자로 시작하는 일반명사이다. (일반 함수와 구분하기 위함)
인스턴스는 new 키워드를 이용해 만든다.
ES5 문법
ES6 문법에서는 class 키워드를 이용해 클래스를 정의한다.
반면 ES5에서는 function 키워드를 이용해 인스턴스를 초기화하며, 메소드를 정의할 때에는 prototype을 이용한다.
// ES5 문법을 기반으로 작성한 Student 클래스
function Student(name, grade, gender) {
this.name = name;
this.grade = grade;
this.gender = gender;
}
Student.prototype.study = function() {
console.log(this.name + '가 공부를 시작합니다.');
}
'Programming > JavaScript' 카테고리의 다른 글
<JavaScript> 프로토타입 (0) | 2022.09.21 |
---|---|
<JavaScript> 객체 지향 프로그래밍 (0) | 2022.09.21 |
<JavaScript> JavaScript Koans (0) | 2022.09.08 |
<JavaScript> 원시 자료형과 참조 자료형 (0) | 2022.09.06 |
<JavaScript> 문자열 slice와 substring (0) | 2022.08.27 |
Comments