Javascript를 보면 위와 같은 충격적인 상황을 마주할 수 있다. 이것이 가능한 이유는 JavaScript는 모든 것이 객체이고 객체의 property를 찾을때 자바스크립트 엔진은 spec에 근거한 lookup 과정을 거치기 때문이다. 배열의 arr[index] 접근도 일반 객체의 property lookup과 같은 규칙을 따르기 때문이다. property lookup이라 함은 특정한 객체의 property를 찾는 과정을 의미하는데, 자바스크립트의 특정 객체 인스턴스의 property를 탐색하는 순서가 있다. 1. obj 자체에 property 있는지 확인2. 없으면 obj.[[Prototype]] 로 이동3. 거기서 property 찾기4. 계속 반복5. 끝까지 없으면 undefined이게 pr..