클래스의 static이란?

클래스 자체에 귀속되어있는 속성이나 메서드를 정의할 때 사용

 

 

클래스 생성 + static 예시

class Lol{
    name;
    year;
    static groupName = 'Riot'; // static을 붙이고 만들면 객체에 귀속x / 클래스자체에 귀속됨

    constructor(name, year){
        this.name = name;
        this.year = year;
    }

    static returnGroupName(){
        return '넥서스';
    }
}

 

출력확인

const hoo = new Lol('아무무', 2002);
console.log(hoo);       // Lol { name: '아무무', year: 2002 }
                        // 🎉 객체를 출력했지만 groupName은 객체에 귀속x 라서, 출력안됨

console.log(Lol.groupName);         // Riot  (클래스의 속성)              
console.log(Lol.returnGroupName()); // 넥서스 (클래스의 함수수)

 

 

 


 

 

클래스의 factory constructor란?

객체를 만들어 반환하는 함수.
new 키워드 없이 함수처럼 호출해서 객체를 반환.

언제사용?
1) 주로 복잡한 객체 생성 로직이나 여러 조건에 따라 다양한 객체를 반환해야 할 때 사용
2) 여러 조건에 따라 다양한 객체를 반환해야 할 때 사용


 

클래스생성 + factory constructor 함수 생성

class Lol2{
    name;
    year;
    
    constructor(name, year){
        this.name = name;
        this.year = year;
    }
    
    // static함수) object를 만들기
    static formObject(object){      // LOl2 클래스에 귀속된 함수
        return new Lol2(
            object.name,
            object.year
        );
    }

    // static함수) 리스트로부터 만들기
    static fromList(list){          // LOl2 클래스에 귀속된 함수
        return new Lol2(
            list[0],
            list[1],
        );
    }
}

 

 

호출결과 확인

// static함수에 object만들기 >> argument를 넣어줌
const hoo2 = Lol2.formObject({      
    name : 'rangGa',
    year : 2003,
});
console.log(hoo2);              // Lol2 { name: 'rangGa', year: 2003 }





 // static함수에 list로 object만들기 >> argument 리스트넣어줌
const Arrow = Lol2.fromList(   
    [
       '호라이즌',
       2003, 
    ]
);
console.log(Arrow);             // Lol2 { name: '호라이즌', year: 2003 }

 

 

 

 

 

출처 : https://www.youtube.com/watch?v=ZOVG7_41kJE&t=183s

 

+ Recent posts