JS Class

Younchong·2021년 11월 1일
0

Class

자바스크립트에서 클래스는 함수의 한 종류이다.

기본 문법

class  ExClass{
  constructor (name) {
    this.name = name; 
 }

  method {
  }

  method2 {
  }

  …
}

constructor

객체기본상태를 설정해주는 생성자메소드 constructor는 class를 new로 호출시 자동으로 호출되어 객체 상태를 초기화 해줍니다. (클래스필드를 초기화)
클래스내 constructor는 한개만 존재가능하고,
constructor를 설정해주지 않으면 자동으로 비워진채로 함수가 생성됩니다.
class로 만든 함수는 내부에 특수 프로퍼티 [FunctionKind]]:"classConstructor" 가 있어서 반드시 호출시엔 new와 함께 호출해야 됩니다. (아니면 error발생)

class field란
클래스 내부에 캡슐화 된 변수를 의미한다.
클래스 내부에서 일반 변수 설정하듯이

class exClass {
  name = “exName” 
}

위와 같이 class 안에서 할당연산자(=)를 사용하여 인스턴스 속성을 지정할 수 있는문법을 말한다.
(개별 객체에만 클래스필드가 설정된다. exClass.prototype이 아닌)

getter 와 setter

getter와 setter는 메서드 앞에 get, set을 각각 붙혀서 클래스필드값을 조작할 때사용할 수 있다.
getter는 메서드로 부터 정보를 받아올때, 그리고 반드시 반환한다.
setter는 정보를 수정할 때 사용한다.

클래스 상속, extends

클래스를 다른 클래스로 확장하는 방법으로 사용됩니다.

class Animal {
  constructor(name) {
  this.name = name;
  this.speed = 0;
  }

  run(velocity) {
  this.speed = velocity;
  }

  stop() {
  this.speed = 0;
  }
}


class Turtle extends Animal {
 hide() {
 alert(`${this.name}이 숨었습니다`);
 }
}

let ninja = new Turtle(“닌자거북”);

이렇게 하면 ninja는 Turtle 클래스에 정의된 hide메소드에 접근할 수 있을 뿐만 아니라, Animal클래스에 정의된 run과 stop 메소드에도 접근할수 있습니다.

Javascript Info 참조

위와 같은 관계를 가지고 있다.

  • 메소드 오버라이딩
    하위 클래스가 상위클래스의 메소드를 재정의해서 사용하는 것을 의미한다.
    그럴 경우 하위클래스가 상위클래스의 메소드를 호출하지않고 바로 자신내부에 있는 메소드를 사용한다.
    위를 예시를 들면 Turtle 클래스가 stop을 다시 정의하면 예시가 될 수 있다.
  • super
    상위 클래스(부모클래스)를 참조할때 상위클래스의 constructor를 호출할 떄 사용한다.(하위, 자식클래스에서만 사용할 수 있다.)
    super.method로도 사용가능
    상속 클래스 생성자에서는(constructor는 반드시 super를 호출해서 사용해야된다.
    특수 내부프로퍼티인 [[ConstructorKind]]:"derived" 가 붙어있어서 this할당하는데 일반 class와 차이를 만든다.
  • static
    static 메소드, 프로퍼티는 일반(protype)메소드, 프로퍼티와는 다르게 인스턴스에서는 접근하지 못하고, class에서만 접근할 수 있다.
    이는 특정 인스턴스가 아닌 전체에 필요한 메소드나 프로퍼티(기능)를 제공하기 위해서 이다.

0개의 댓글