목차
- 스태틱이란?
- 문법
- 클래스 내에서 static 키워드 사용하기
- 다른 static 멤버 내에서 static 멤버 호출
- 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 |
댓글