Class

Shin Woohyun·2021년 7월 26일
0
post-custom-banner

Class

Class
: 데이터가 들어있지는 않고, 어떤 데이터가 들어올 수 있다고 되어있는 틀. 한 번만 정의된다.

  • template
  • declare once
  • no data in

Object

  • instance of a class
  • created many times
  • data in

Class declarations

class Person {
  //constructor
  constructor(name){
    //fields
    this.name = name;
  }
  //methods
  spaek() {
    console.log(`Welcome ${this.name}!`);
  }
}
// object 생성
const hyun = new Person('hyun');

Getter and Setter

// 나이가 음수일 수는 없으니까, 음수일수 없음을 알려주거나 0으로 설정하자.
class Person {
  constructor(age) {
    this.age = age;
  }
  // constructor의 this.age가 getter를 호출
  get age() {
    return this._age;
  }
  // constructor의 this.age "= age" 값을 메모리에 할당할 때 setter를 호출
  set age(value) {
    //if (value < 0) {
    //  throw Error('age can not be negative');
    //}
    this._age = value < 0 ? 0 : value;
  }
}

fields (public, private)

: constructor 없이 class field를 정의.

  • publicField : 외부에서 접근 가능.
  • #privateField : 외부에서 접근 불가능.

Static properties and methods

object에 넣어주는 데이터와는 상관없이, 공통적으로 class에서 사용할 때, 메모리를 절약할 수 있다.

class ClassWithStaticField {
  static staticField = 'static field'
  static baseStaticMethod() { return 'base static method output' }
}

Inheritance, polymorphism

상속: class를 확장시켜 동일한 것들을 재사용할 수 있다.
다형성: 상속을 받아와서 일부 변경시키거나 추가해서 사용할 수 있다.
class Rectangle extends Shape {}
super 키워드는 객체의 부모가 가지고 있는 메서드를 호출하기 위해 사용된다.

class checking: instanceOf

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Classes/Public_class_fields

https://youtu.be/_DLhUBWsRtw

post-custom-banner

0개의 댓글