자바스크립트의 배열이 특별한 이유는 length 프로퍼티가 특별하게 작동하기 때문이다.
- 이 프로퍼티 값은 배열에 새로운 원소가 추가될 때마다 자동으로 갱신된다.
- 이 프로퍼티 값을 임의로 설정함으로써 배열의 크기를 확장하거나 촉수할 수 있다.
자바스크립트의 배열은 또한 Array 클래스의 인스턴스(instanceof Array)이며,
따라서 배열을 통해 Array 클래스의 다양한 메서드를 호출할 수 있다.
이러한 점은 자바스크립트 배열의 고유한 특성이다.
그러나 이러한 특성이 배열을 정의하는 본질적인 특성이라고는 볼 수 없다.
때로는 length 프로퍼티와 음이 아닌 정수 이름의 프로퍼티가 있는 임의 객체를 배열로 간주하는 것이
완전히 합리적일 때도 있다.
이렇게 '배열과 유사한' 객체들은 실제로 프로그래밍을 다루는 현장에서도 때때로 마주친다.
비록 이 객체들을 통하여 배열 메서드를 호출한다거나 length 프로퍼티를 사용한 특별한 기능을
기대하는 것은 어렵지만, 실제 배열의 원소들에 대해 반복 작업을 하기 위해 마련한 알고리즘을 그대로
활용할 수 있다.
사실상 많은 수의 배열 알고리즘이 실제 배열뿐만 아니라 배열과 유사한 객체들과도 잘 작동한다.
새로운 원소를 배열에 추가하거나 length 프로퍼티를 변경하려 하지 않는한, 배열과 유사한 객체를
실제 배열과 같은 것으로 간주할 수 있다.
다음 코드는 일반적인 객체를 배열과 유사한 객체로 만들기 위해 프로퍼티들을 추가한다.
그렇게 탄생한 유사 배열(pseudo-array)의 '원소'들에 대하여 반복적으로 코드를 수행하는 예를 보여준다.
이 객체를 '배열과 유사한' 객체로 만들기 위해 프로퍼티들을 추가한다.
var i = 0;
while(i < 10) {
i++;
a.length = i;
// 이제 이 객체가 마치 실제 배열인 것처럼 반복문을 수행한다.
var total = 0;
for(var j = 0; j < a.length; j++)
8.2.2절에서 설명하는 전달인자 객체는 배열과 유사한 객체다.
클라이언트 측 자바스크립트에서는 document.getElementByTagName()과 같은 많은 수의 DOM 메서드가 배열과 유사한 객체들을 결과로 반환한다.
'IT_Programming > JavaScript' 카테고리의 다른 글
자바스크립트 완벽가이드 - 8.2 함수 전달인자 (0) | 2010.07.04 |
---|---|
자바스크립트 완벽가이드 - 8.1 함수 정의와 호출 (0) | 2010.07.04 |
자바스크립트 완벽가이드 - 7.7 배열 메서드 (0) | 2010.07.04 |
자바스크립트 완벽가이드 - 7.6 배열 원소 읽고 쓰기 (0) | 2010.07.04 |
자바스크립트 완벽가이드 - 7.5 배열 (0) | 2010.07.04 |