Class
- property(속성 field), function(행동 method) 포함
- 청사진, template라고 불림
- 데이타가 들어있지 않음
- 한번만 선언함
- ES6에서 추가됨
- 문법상으로만 추가됨(syntactical sugar)
Object
- 클래스를 이용해 새로운 인스턴스 생성하면 오브젝트가 됨
- 클래스를 이용해 여러개 만들 수 있음
- 메모리에 올라가게 됨
- 데이터 들어가 있음
Class declarations
class Person{
//constructor
constructor(name, age){
//fields
this.name = name;
this.age = age;
}
//method
speak() {
console.log(`$(this.name) : hello!`);
}
}
+ 새로운 오브젝트 생성시
const 변수명 = new 클래스명(속성값 할당, 속성값 할당)
Getter & Setter
- 클래스 사용에서 잘못된 값을 할당하는 오류를 방지하기 위해 사용
ex. 나이를 -1로 설정하는 것과 같은 오류
- getter와 setter 생성 시 값을 설정하고 불러올 때 get 함수와 set 함수를 불러오게 됨
-> call stack size exceeded 오류 발생 가능
-> getter 함수와 setter 함수의 변수명을 다른 걸로 지정하기
class User {
{
constructor(firstName, lastName, age) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}
get age() {
return this._age; }
set age(value) {
//if(value < 0) {
// thow Error('age can not be negative');
}
this._age = value < 0 ? 0 : value;
}
Fields(public, private)
- 생성자(constuctor)을 사용하지 않고 필드 정의 가능
- 그냥 정의할 시 public
- #를 붙여 정의할 경우 private
-> 클래스 외부에서 값 접근, 변경 불가
Static
- 클래스 내의 필드와 메소드들은 새로운 오브젝트 생성시 복제되어 값만 지정된 값으로 변경되어 만들어짐
- 오브젝트, 데이터에 상관없이 클래스가 가진 고유한 값, 동일하게 사용되는 메소드
- 오브젝트에 상관없이 공통적으로 사용되는 경우 작성(메모리 사용 줄여줌)
- 클래스명.변수명 or 함수명으로 호출
Inheritance
- 상속(extends)를 통해 기존 클래스의 필드, 메소드 재사용 가능
- override를 통해 필요한 함수만 재정의 가능
- override를 통해 재정의한 경우 super 함수를 이용해 부모의 메소드도 호출됨
InstanceOf
- 인스턴스가 해당 오른쪽의 클래스에서 만들어진 것인지 확인
- 자바스크립트의 모든 오브젝트 클래스들은 오브젝트를 상속함
+ 객체지향 언어라서 그런지 상속 개념이나 override와 같은 익숙한 친구들이 나와서 반가웠다. 처음에 자바를 배웠을 때에는 무슨 기능인지도 제대로 이해하지 못하고 사용했었는데, 이제는 사용을 해본 적이 있기 때문인지 개념이 어렵지 않게 다가오는 것 같다!
'개발 공부 > JavaScript' 카테고리의 다른 글
8. 배열 (0) | 2022.01.21 |
---|---|
7. 오브젝트 (0) | 2022.01.20 |
5. Arrow function (2) | 2022.01.18 |
4. operator, if, for, loop (0) | 2022.01.16 |
3. 데이터타입(let? var?) hoisting (0) | 2022.01.15 |