웹/Javascript

Array와 Object, Enhanced for문과 그냥 for문

클라리넷 2012. 7. 2. 12:08

Array, Object가 하나씩 있고,

각각에 대해 원소들을 순서대로 접근하고 싶다면,


Array는 그냥 for문에다가 조건을 Array.length로 잡고,

 Object는 Enhanced for문을 쓰면 된다.


Array에서 Enhanced for문을 쓰면 Array 클래스에 내재된 함수까지 모조리 Enhanced에 걸린다.  그래서 결과가 이상하게 나오게 된다(isArray, copy, size 등등.  push, pop 같은 건 Array 객체에만 있는 거라서 나오지 않는다).


반대로, Object에서 Object.length를 쓰게 되면 length가 undefined로 나온다.  당연한 것이, Object는 배열이 아니기 때문에 원소의 개수를 셀 수 없다.  해쉬된 원소들을 셀 수 없냐고 하면 글쎄....  셀 수는 있을 거 같지만 위에서처럼 멤버 함수까지 모조리 세어지기 때문에 안 하지 않았을까 싶다.