Static member VS Instance member

Junghyun Park·2021년 7월 6일
0

배경(기본 지식)

Static과 Instance 개념자체는 클래스에서의 하위 개념이지만, 자바스크립트의 경우에 대해서만 알아봄
자바스크립트는 프로토타입 기반의 언어이므로, 클래스 개념이 원칙적으로 존재하지 않음
그러나, ES6에서 클래스 문법이 추가되었고, 그럼에도 여전히 일반적인 클래스와 차이는 존재함

static과 instance member의 구분

클래스 내에서 변수 혹은 함수 중, 인스턴스에 상속되는지(인스턴스가 참조되는지- 더욱 정확하게는) 여부에 따라 나뉨

  • 참고로, 다른 클래스 기반의 언어와 달리 자바스크립트에서는 인스턴스에서도 직접 메서드를 정의할 수 있으므로, 'instance' 메서드라는 명칭 자체는 프로토타입에 정의한 메서드인지 인스턴스에 정의한 메서드 인지에 대해 도리어 혼란을 야기하므로 prototype method라고 부르는 것이 더 정확한 표현임
  • 결국, 인스턴스에서 직접 호출(접근)할 수 있는 메서드를 프로토타입 메서드라고하고, 그렇지 않은 메서드를 스태틱 메서드라고 함

static 특징 및 참고사항

  • 다른 static method 내부에서 기존의 static method에 접근하고자 할 때에는 this keyword를 사용

  • 비정적 메소드에서 정적 메소드를 호출하는 것은 this로는 불가능하다. class 이름 혹은 this.constructor를 이용해야 접근이 가능

  • 클래스를 설계할 때, 멤버변수 중 모든 인스턴스에 공통적으로 사용해야하는 것에 static을 붙인다.

  • static이 붙은 멤버변수는 인스턴스를 생성하지 않아도 사용할 수 있다.(클래스가 메모리에 올라갈때 자동적으로 생성) 반면 instance 멤버변수는 반드시 인스턴스를 생성해야 사용가능

참고 사이트
https://ifcontinue.tistory.com/2

profile
21c Carpenter

0개의 댓글