배열은 특별한 형태의 객체다
typeof 배열 === 'object' // true
배열을 검사하기 위해서는
Array.isArray(배열)
const a = {}
let i
for(i=0; i<10; i++){
a[i] = i
}
a.length = i
Arguments 객체가 유사 배열 객체
유사 배열은 Array.prototype을 상속받지 않기 때문에
배열 메소드를 사용할 수 없다
대신 Function.call()을 통해 간접 호출을 할 수 있다
-> Function 객체의 메소드 call() 사용
const a = { '0': 'a', '1': 'b', '3': 'c', length: 3 }
Array.prototype.slice.call(a, 0) // ['a', 'b', 'c']
// 실제 배열이 반환된다
문자열은 인덱스로 접근 가능하지만 수정할 수 없다
하지만 시도해도 오류가 발생하지 않고 아무 일이 일어나지 않는다
킹치만 문자열에서도 Function.call()을 통해 배열 메소드를 사용할 수 있다
역시나 문자열을 수정할 순 없지만 새로운 데이터로 반환하는 메소드는 사용 가능
const s = 'JavaScript'
const result = Array.prototype.filter.call(s, (item) => item.match(/[^aeiou]/)).join("")
console.log(result) // JvScript