LHJ

I'm a FE developer.

9.2.8 문자열 표현

10 May 2020 » js_lj

모든 객체는 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을 호출하면 객체 식별에 필요한 정보를 얻을 수 있습니다.