본문 바로가기
JavaScript 이론/Object

static

by 혀닙 2022. 6. 8.

 

 

목차

  1. 스태틱이란?
  2. 문법
  3. 클래스 내에서 static 키워드 사용하기
  4. 다른 static 멤버 내에서 static 멤버 호출
  5. non-static 메소드 내에서 static 멤버 호출하기

 

 

 

 

 

1. 스태틱이란?

  • static키워드는 클래스 메소드나 클래스 속성을 정의함
  • 스태틱 메소드나 스태티틱 속성은 클래스로 생성된 인스턴스에 의해 호출될 수 없으며, 클래스 그자체에 의해 호출됨

 

2. 문법

  • 스태틱의 문법은 아래와 같으며 아래의 각각을 static 멤버라고 함
static 메소드명() { }
static 속성명 [= 속성값];
// 클래스 static 초기화 코드 블럭
static {

}

 

3. 클래스 내에서 static 키워드 사용하기

class tripler {
  static name = 'tripler';
  static calculator(n = 1) {
    return n * 2
  }
}

const tp = new tripler()

console.log(tripler.calculator())	//2
console.log(tripler.calculator(4))	//8
console.log(tp)	//tripler


console.log(tp.calculator())	//에러 발생

 

 

 

3-1 tp.calculator() 호출 시 아래와 같이 에러가 발생하는 이유는?

  • calculate() 메서드가 인스턴스가 아닌 static 멤버이기 때문

 

 

 

 

 

4. 다른 static 멤버 내에서 static 멤버 호출하기

동일한 class 내에 있는 다른 스태틱 속성이나 메서드를 호출하기 위해서는 this 키워드를 사용할 수 있다.

 

class StaticMethodCall {
  static staticProperty = '스태틱 속성';
  static staticMethod() {
    return '스태틱 메소드와 ' + this.staticProperty + '이 호출되었습니다.';
  }
  static anotherStaticMethod() {
    return `anotherStaticMethod에서` + this.staticMethod;
  }
}

console.log(StaticMethodCall.anotherStaticMethod());
//anotherStaticMethod에서 스태틱 메소드와 스태틱 속성이 호출되었습니다.

 

 

 

 

 

5. 클래스 생성자 또는 다른 메소드에서 스태틱 멤버 호출하기

  • static 멤버들은 static이 아닌 메서드(non-static method) 에서는 this 키워드 사용을 통해 직접 접근할 수 없다.
  • 따라서 non-static 메소드에서 static 멤버드를 호출하는 방법으로는 아래의 두 가지가 있다.

 

 

 

 

5-1 문법.

(1) class명을 사용해서 호출

클래스명.메소드명();
클래스명.속성명;

 

 

 

(2) 생성자의 속성으로 메소드 호출

this.constructor.메소드명();
this.constructor.속성명;

 

'JavaScript 이론 > Object' 카테고리의 다른 글

객체3. class 개념  (0) 2022.04.22
객체2. this와 생성자(constructor)  (0) 2022.04.22
객체1. 기본 개념  (0) 2022.04.22

댓글