반응형
JavaScript의 배열과 유사 배열에 대해서 알아 보겠습니다.
var array = [1, 2, 3]; // [1, 2, 3]
var nodes = document.querySelectorAll('a'); // NodeList [a, a, a, ...]
위 예제에서 array는 배열이고, nodes는 유사배열입니다. 둘 다 []로 감싸져 있거든요. 그럼, Array.isArray 메서드 또는 instanceof Array 를 사용해서 어떤것이 배열인지 확인해 보도록 하겠습니다.
Array.isArray(array); // true
Array.isArray(nodes); // false
array instanceof Array; // true
nodes instanceof Array; // false
array는 직접 [] 리터럴을 사용하여 선언 하였기 때문에 배열 입니다. nodes는 유사배열 입니다.
var heights = {
0: '172',
1: '162',
2: '182'
};
heights 객체는 유사배열 입니다. 유사배열의 경우는 Array의 메서드를 쓸 수 없습니다.
array.forEach(function(elem) { console.log(elem); }); // 1, 2, 3
heights.forEach(function(elem) { console.log(elem); }); // Uncaught TypeError
heights에 forEach같은 배열 메서드를 사용하면 Uncaught TypeError 에러가 발생합니다. 배열이 아니므로 발생하는 것입니다. 배열의 forEach 메서드를 빌려서 사용할 수 있습니다. 바로 call 이라는 배열의 프로토타입 메서드를 이용해서 가능합니다.
Array.prototype.forEach.call(heights, function(elem) { console.log(elem); });
반응형
'JavaScript' 카테고리의 다른 글
JavaScript split 함수 (0) | 2020.07.10 |
---|---|
(==) 형변환 비교 (===) 엄격한 비교 (0) | 2020.04.29 |
undefined 타입 (0) | 2020.04.29 |
oninput onchange Event (0) | 2020.04.28 |
JSON.stringify JSON.parse (0) | 2020.04.26 |