You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
각각 Array와 Object를 생성하고, 같은 형태가 되도록 Array 원소([1,2,3])와 객체의 프로퍼티({0:1, 1:2, 2:3})를 설정한 상태에서
단순히 Object의 프로토타입 링크를 Array의 프로토타입 오브젝트로 설정해서 테스트해 본 결과. Object를 Array로 인식하지는 않았습니다.
배열과 객체가 표현되는 모양새는 비슷하지만 자바스크립트 엔진단에서 처리할 때 차이가있어서 단순히 프로토타입 상속만으로 객체가 배열이 되지는 않는 것 같습니다.
결론 - 단순히 프로토타입 링크를 바꾸는것으로 Object가 Array로 바뀌지는 않았습니다. Object를 Array로 변환하고 싶다면 Object가 제공하는 다양한 함수들로 Object의 Key와 Value를 읽어서 새로운 Array를 만드는 방법이 널리쓰이는 것 같습니다. 메모리를 할당하고 값을 읽어서 새로 Array를 생성해야 합니다.
덧붙여서, Array 객체가 처음 생성될 때 Array.constructor가 호출됩니다. Array.constructor를 콘솔에 쳐보니까 native code라고 나옵니다.
잠깐 검색해본 결과 구현이 나와 있지 않네요.
constructor에서 단순히 prototype을 array로 하는 것 뿐만 아니라 일반 object와 다른 처리를 하는게 아닐까 추측(...) 합니다.
우선 array의 prototype을 상속받는 방법이 궁급합니다.
그리고 완전히 array처럼 작동하는지도 궁금합니다.
The text was updated successfully, but these errors were encountered: