let obj = {
toString() {
return "2";
}
};
console.log(obj * 2); // 4
객체에 또 다른 변수나 메서드를 사용하지 않는다면, toString()에서 모든 형 변환을 처리한다.
다른 변수나 메서드가 있음에도 toString() 함수가 있다면, 이 함수를 우선적으로 실행하여 형 변환을 한다.
그러면 객체가 원시형으로 변해서 반환한다.
같은 의미를 가진 함수 valueOf()를 써도 같은 결과가 나온다.
이 이유는 Symbol과 연관되어 있는데, 이 부분은 추후에 공부하고 정리할 예정이다.
Symbol에 있는 obj[Symbol.toPrimitive] (hint)를 사용하면, String, Number, default 3개 유형으로 나온다.
default는 Number와 같다고 보면 되고, 위 함수는 toString()를 호출한다고 보면 된다.
결국 위 함수를 사용해 함수가 어떤 값을 뱉고 있는지 확인하는 용도로 사용한다고 보면 된다.
toString은 숫자 진수 변화도 할수 있고, 사용 용도가 다양하네요.
객체에서 동작하는건 신기하고 처음 알아 갑니다.
심볼에 대해서는 아직 공부 하지 않았지만 이 내용을 봄으로써 심볼에 대해 알게 되네요. ㅎㅎㅎ