class, new, extends, super, prototype, getter, setter

EBinY·2021년 11월 8일
0
  1. class 선언(declaration)은 prototype 기반 상속을 사용하여 새로운 class를 생성하고
  2. new 연산자(operator)를 통해 instance object를 생성한다
  3. extends 키워드는 class를 다른 class의 자식으로 만들기 위해 사용된다(상속)
  4. super 키워드는 부모 오브젝트의 함수를 호출하거나, class의 속성을 호출한다
  5. prototype: 객체를 상속하기 위하여 JavaScript에서 사용하는 방식, 프로토타입 객체를 가져 메소드와 속성들을 상속받는다
  6. getter: 접근자, get 구문은 객체의 속성 접근 시 호출할 함수를 바인딩
  7. setter: 설정자, set 구문은 객체의 속성에 할당을 시도할 때 호출할 함수를 바인딩
class Grub {
  constructor(age, color, food) {
    this.age = 0;
    this.color = 'pink';
    this.food = 'jelly';
    // this.job
  }
  eat() {
    return 'Mmmmmmmmm jelly'
  }
  get age() { // getter
    return this._age;
    // 구분을 위해 underscore를 넣어준다
  }
  set age(value) { // setter
    // if (value < 0) {
    //   throw Error('age can not be     // negative')
    // }; // or
    this._age = value < 0 ?0 :value;
  }
class Bee extends Grub {
  constructor(job) {
    super()
    this.age = 5;
    this.color = 'yellow';
    this.job = 'Keep on growing';
  }
  convert() {
    return 'jelly melting.'
  }
}
let bee1 = new Bee()

bee1.__proto__ === Bee.prototype
bee1.__proto__.__proto__ ===
Bee.__proto__ ===
Grub.prototype
  • prototype chaining : double underscore proto을 통한 연결된 prototype을 사용할 때에, 위를 거슬러 올라가서 찾을수 있는 이유
  • super method는 속성뿐만 아니라 함수도 가져올 수 있다(상속과 다양성)
eat() {
  console.log('mmm yammy'); // 새로 설정한 값
  super.eat(); // extends한 class의 eat method를 가져와서 그대로 쓴다
}
// publicField = 2;
// #privateField = 0; // class 내부에서만 접근이 가능해짐, 외부에서는 접근, 변경이 불가(#)
// static method: class 자체에 붙는다, class name으로 불러와야 한다, 공통적으로 class에서 사용하는 것에 쓰는 것이 메모리 save 등에 도움이 된다, typescript 등에서도 많이 쓰인다
// instanceof method: class checking 

0개의 댓글