문자열 표현
모든 객체는 Object를 상속하므로 Object의 메서드는 기본적으로 모든 객체에서 사용할 수 있습니다. 객체의 기본적인 문자열 표현을 제공하는 toString도 그런 메서드 중 하나입니다. toString의 기본 동작은 “[object object]”를 반환하는 것인데, 이건 거의 쓸모 없습니다.
toString 메서드에서 객체의 중요한 정보를 제공한다면 디버깅에도 유용하고, 객체를 한 눈에 파악할 수 있습니다. Car 클래스의 toString 메서드가 제조사, 모델, VIN을 반환하도록 고쳐봅시다.
class Car {
toString() {
return `${this.make} ${this.model} ${this.vin}`;
}
}
이제 Car의 인스턴스에서 toString을 호출하면 객체 식별에 필요한 정보를 얻을 수 있습니다.
munifico의 생각 : Car의 인스턴스는 루트 클래스인 Object의 상속입니다. 루트 클래스이자 슈퍼클래스인 Object의 메서드 중 toString을 Car에서 재정의(override)함으로서, 프로토타입의 toString이 아닌 Car의 toString이 호출됩니다.