DEV Community

Discussion on: valueOf 메소드, 뭐하러 있냐?

Collapse
 
jeongtae profile image
Jeongtae Kim

좋은 글 감사합니다. valueOf()의 존재 의미를 잘 몰랐는데, 한번에 쉽게 이해할 수 있었습니다. 그런데 마지막에 첨언하신 내용에서, 생 객체에 valueOf() 메서드를 호출하면 "[object Object]"같은 문자열이 표출된다고 하셨는데, toString()을 써야할 것을 valueOf()로 잘못 적으신게 아닌가 해서 댓글 적어봅니다.

Collapse
 
composite profile image
Composite

흠... 다시보니 그렇군요. valueOf 미정의 시 객체 자체를 뱉게 됩니다.
따라서 alert 함수 호출하면 무조건 문자열 가져오기 위해 인자.toString() 메소드 호출해서 뿌리니까요.
생각난 김에 재밌는 코드를 하나 만들어 봤습니다.

function Wow() {
  this.toString = () => "Wow"
}

alert(new Wow().valueOf())
Enter fullscreen mode Exit fullscreen mode

결과적으로는 Wow 라는 경고창이 뜰텐데, new Wow().valueOf().toString() 결과를 뱉어내게 되니 결국 자신을 뱉어내고 toString() 메소드를 호출하죠.

하지만 문제는, 제가 왜 저딴식으로 작성했는지 오래되어 기억이 안난다는 거죠.
지적 감사합니다. 근데 고치기 귀찮군요. 고치자니 재미도 없고 감동도 없어서.