모든 객체는 Object를 상속하므로 Object의 메서드는 기본적으로 모든 객체에서 사용할 수 있습니다.
객체의 기본적인 문자열 표현을 제공하는 toString 도 그런 메서드 중 하나입니다.
toString의 기본 동작은 “[object Object]”를 반환하는 것인데, 이건 거의 쓸모가 없습니다.
toString 메서드에서 객체에 관한 중요한 정보를 제공한다면 디버깅에도 유용하고, 객체를 한 눈에 파악할 수 있습니다.
Car 클래스의 toString 메서드가 제조사, 모델, VIN을 반환하도록 고쳐봅시다.
const Car = (function() {
const carProps = new WeakMap();
class Car {
static getNextVin() {
return Car.nextVin++; // this.nextVin++ 라고 써도 되지만,
// Car를 앞에 쓰면 정적 메서드라는 점을
// 상기하기 쉽습니다.
}
constructor(make, model) {
this.make = make;
this.model = model;
this.vin = Car.getNextVin();
}
static areSimilar(car1, car2) {
return car1.make === car2.make && car.model === car2.model;
}
static areSame(car1, car2) {
return car1.vin === car2.vin;
}
toString () {
return `${this.make} ${this.model} : ${this.vin}`
}
}
return Car;
})();
Car.nextVin = 0;
const car1 = new Car("Tesla", "S");
const car2 = new Car("Hyundai", "K5");
이제 Car의 인스턴스에서 toString을 호출하면 객체 식별에 필요한 정보를 얻을 수 있습니다.