좋은 글 감사합니다. valueOf()의 존재 의미를 잘 몰랐는데, 한번에 쉽게 이해할 수 있었습니다. 그런데 마지막에 첨언하신 내용에서, 생 객체에 valueOf() 메서드를 호출하면 "[object Object]"같은 문자열이 표출된다고 하셨는데, toString()을 써야할 것을 valueOf()로 잘못 적으신게 아닌가 해서 댓글 적어봅니다.
valueOf()
"[object Object]"
toString()
흠... 다시보니 그렇군요. valueOf 미정의 시 객체 자체를 뱉게 됩니다. 따라서 alert 함수 호출하면 무조건 문자열 가져오기 위해 인자.toString() 메소드 호출해서 뿌리니까요. 생각난 김에 재밌는 코드를 하나 만들어 봤습니다.
alert
인자.toString()
function Wow() { this.toString = () => "Wow" } alert(new Wow().valueOf())
결과적으로는 Wow 라는 경고창이 뜰텐데, new Wow().valueOf().toString() 결과를 뱉어내게 되니 결국 자신을 뱉어내고 toString() 메소드를 호출하죠.
Wow
new Wow().valueOf().toString()
하지만 문제는, 제가 왜 저딴식으로 작성했는지 오래되어 기억이 안난다는 거죠. 지적 감사합니다. 근데 고치기 귀찮군요. 고치자니 재미도 없고 감동도 없어서.
Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment's permalink.
Hide child comments as well
Confirm
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
좋은 글 감사합니다.
valueOf()
의 존재 의미를 잘 몰랐는데, 한번에 쉽게 이해할 수 있었습니다. 그런데 마지막에 첨언하신 내용에서, 생 객체에valueOf()
메서드를 호출하면"[object Object]"
같은 문자열이 표출된다고 하셨는데,toString()
을 써야할 것을valueOf()
로 잘못 적으신게 아닌가 해서 댓글 적어봅니다.흠... 다시보니 그렇군요. valueOf 미정의 시 객체 자체를 뱉게 됩니다.
따라서
alert
함수 호출하면 무조건 문자열 가져오기 위해인자.toString()
메소드 호출해서 뿌리니까요.생각난 김에 재밌는 코드를 하나 만들어 봤습니다.
결과적으로는
Wow
라는 경고창이 뜰텐데,new Wow().valueOf().toString()
결과를 뱉어내게 되니 결국 자신을 뱉어내고toString()
메소드를 호출하죠.하지만 문제는, 제가 왜 저딴식으로 작성했는지 오래되어 기억이 안난다는 거죠.
지적 감사합니다. 근데 고치기 귀찮군요. 고치자니 재미도 없고 감동도 없어서.