인프런 커뮤니티 질문&답변

이석원님의 프로필 이미지

작성한 질문수

코어 자바스크립트

(예전자료 - 삭제) 프로토타입

마지막 예제 질문드립니다!

21.01.10 01:50 작성

·

156

1

arr.__proto__.__proto__.toString.call(arr)의 결과가

[object Array]인게 이해가 잘안가서 이것저것 찾아보고 정리해본건데 이런 맥락이 맞을까요?

답변 2

1

정재남님의 프로필 이미지
정재남
지식공유자

2021. 01. 10. 23:46

네, 대충 비슷하게 이해하셨지만,
this를 잘 생각해보실 필요가 있습니다.

Array.prototype.toString 을 호출하면 호출한 주체(this)의 각 요소를 콤마(, )로 합친 것으로 출력할 것이고,
Object.prototype.toString을 호출하면 호출한 주체(this)의 생성자 이름을 [object ?] 로 출력할 것입니다.

호출한 주체(this)가 '배열'인지 '객체'인지는 중요하지 않습니다.
toString 메소드는 그저 this로 지정된 대상을 정해진 결과로 출력할 따름입니다.

Array, Object 각각 toString의 함수 내부를 살펴보면 대충 다음과 같이 생겼습니다.

Array.prototype.toString = function() {
  return this.join(',');
}

Object.prototype.toString = function() {
  return '[' + typeof this + ' ' + this.constructor.name + ']';
}

0

이석원님의 프로필 이미지
이석원
질문자

2021. 01. 12. 19:29

완벽히 이해했습니다! 자세한 답변 감사드립니다