DeepDive 정적 메서드 프로퍼티

이창훈·2022년 7월 4일
0

JS

목록 보기
1/1

static

  1. static : (변화움직임이 없이) 고정된 (형용사)

  2. 정지 상태의

  • static메서드/프로퍼티 : 정적 메서드/프로퍼티는 클래스의 인스턴스 없이 호출이 가능하며 클래스가 인스턴스화되면 호출할 수 없다. 정적 메서드는 종종 어플리케이션의 유틸리티 함수를 만드는데 사용된다.
//ES5의 방식

function King(name, firstSon){
		this.name = name;
		this.firstSon = firstSon
}
King.prototype.jangja = function(){
	if(this.firstSon === true){
		console.log("과인 " + this.name +"은/는 적장자다")
}
	else{
	console.log("끌어내라")
}
}

King.staticMethod = function(){
	return console.log("ES5")
}
King.staticMethod()

//ES6의 방식
class King {
	constructor(name, firstSon){
		this.name = name;
        this.firstSon = firstSon
    }
    static who = "정적 프로퍼티 이름이다!"
	jangja(){
        if(this.firstSon === true){
            console.log("과인 " + this.name +"은/는 적장자다")
        }
        else{
            console.log("끌어내라")
        }
	}
    static hello(){
        console.log("반갑다 나는 정적 메서드다!!")
    }
}
//인스턴스
const taeJong = new King('이방원', true);

taeJong.hasOwnProperty('who') // false

King.jangja() // Uncaught TypeError: King.jangja is not a function
King.hello() // 반갑다 나는 정적 메서드다!!
King.who // '정적 프로퍼티 이름이다!'
  • 정적 프로퍼티/메서드는 생성자 함수가 생성한 인스턴스로 참조/호출할 수 없다.

  • 생성자 함수가 생성한 인스턴스는 자신의 프로토타입 체인에 속한 객체의 프로퍼티/메서드에 접근할 수 있다.

  • 하지만 정적 프로퍼티/메서드는 인스턴스의 프로토타입 체인에 속한 객체의 프로퍼티/메서드가 아니므로 인스턴스로 접근할 수 없다.

결론

  • 정적 메서드는 클래스 선언부 안에 위치하고 앞에 static 이라는 키워드가 붙는다.
  • 정적 프로퍼티는 데이터를 클래스 수준에 저장하고 싶을 때 사용한다.
  • 정적 프로퍼티 역시 개별 인스턴스에 묶이지 않는다.
profile
실패를 두려워하지 않고 배우고 기록하여 내일의 밑거름 삼아 다음 단계로 성장하겠습니다.

0개의 댓글