February 14, 2023
공장에서 물건을 생산하듯이 객체를 생산하는데에 특화된 패턴 같은데, 객체를 생성한다는 클래스의 의의와 어떻게 다른 것일까?
constructor: 클래스로 생성된 객체를 생성하고 초기화하는 메서드
class body
class User {
constructor(firstName, lastName, email) {
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
}
fullName() {
return `${this.firstName} ${this.lastName}`;
}
static species = 'human'
static getSpecies(){
return 'this is human'
}
}
const user = new User("John","Doe","john@doe.com");
console.log("user:", user);//User {firstName: { firstName: 'John', lastName: 'Doe', email: 'john@doe.com' }}
console.log("static - Instance user.species: ", user.species, ", user.getSpecies: ", user.getSpecies());
//undefined, user.getSpecies is not a function
console.log("static - User.species:", User.species, ", User.getSpecies: ", User.getSpecies());
//User.species: human , User.getSpecies: this is humanclass Car {
constructor(type, model, price) {
this.type = type;
this.model = model;
this.price = price;
}
}
class CarFactory {
createCar(type) {
switch (type) {
case "sedan":
return new Car(type, 1, "100");
case "suv":
return new Car(type, 2, "200");
}
}
}
const carFactory = new CarFactory();
const sedan = carFactory.createCar("sedan");
const suv = carFactory.createCar('suv')
console.log("sedan:", sedan);//sedan: Car { type: 'sedan', model: 1, price: '100' }
console.log('suv:', suv)//suv: Car { type: 'suv', model: 2, price: '200' }