배열(Array)
유사 배열 객체
자바스크립트 배열 메서드는 배열 뿐 아니라 유사배열 객체에서도 적용이 가능하도록 범용(generic) 메서드로 구현되었다.(concat()
메서드는 예외.) 유사배열은 Array.prototype
을 상속받지 않기 때문에, 배열 메서드를 해당객체로 호출할 수는 없다. 대신 Function.call
메서드를 통해서 간접적으로 호출할 수 있다.
a = {"0":"a","1":"b","2":"c","3":"d", length:4}
Array.prototype.join.call(a, "+"); // -> "a+b+c"
Array.prototype.slice.call(a, 0); // -> ["a","b","c"] 배열이 반환됨.
Array.prototype.map.call(a, function(x){
return x.toUpperCase();
});
// -> ['A','B','C']
call의 첫번째 인자는 메서드의 대상, 두번째 인자부터 해당 메서드의 인자로 들어간다.
문자열을 배열처럼 사용하기
요즘 대부분의 브라우저에서 문자열은 읽기전용 배열처럼 동작한다. 문자열의 각 문자는 chatAt()
메서드로 접근할 수도 있지만 대괄호 []
를 사용해 접근할 수도 있다. 읽기 전용이므로 push()
, sort()
, reverse()
, splice()
와 같이 대상을 직접 수정하는 메서드는 동작하지 않는다.
var s = "text";
s.charAt(0); // -> 't'
s[0] // -> 't'