Static
- 객체에 귀속되지 않는다.
- 클래스에 직접 귀속돼서 new로 쓸 필요 없다.
class Person {
name;
year;
static groupName = '쑤';
constructor(name, year) {
this.name = name;
this.year = year;
}
// 함수도 가능
static returnGroupName() {
return '쑤';
}
}
const soo = new Person('soo', 1997);
// 객체에 귀속되지 않는다.
console.log(soo); // Person { name: 'soo', year: 1997 }
// 그럼 어디에 귀속돼있나?
// 클래스 자체에 귀속되어있다!
console.log(Person.groupName) // 쑤
console.log(Person.returnGroupName()) // 쑤
Static 사용해서 Factory Constructor 생성 패턴 적용해보기
- 인스턴스를 반환받지 않고 미리 어떤 데이터를 입력받아서 해당 인스턴스를 만들지 템플릿화해서 쓸 수 있는 장점이 있다.
class Person {
name;
year;
constructor(name, year) {
this.name = name;
this.year = year;
}
static fromObject(object) {
return new Person(object.name, object.year);
}
static fromList(list) {
return new Person(list[0], list[1]);
}
}
// new를 쓰지 않아도 객체를 반환해주기 때문에 편리한 패턴중 하나
const soo = Person.fromObject({
name: "soo",
year: 1997,
});
console.log(soo); // Person { name: 'soo', year: 1997 }
const soo2 = Person.fromList(["soo2", 1997]);
console.log(soo2); // Person { name: 'soo2', year: 1997 }