본문으로 건너뛰기

`at` 메서드 - 상대 인덱싱을 위한 방법

· 약 2분
Shu-yu Guo ([@_shu](https://twitter.com/_shu))

새로운 at 메서드는 Array.prototype, 다양한 TypedArray 프로토타입 및 String.prototype에 추가되어 컬렉션의 끝에 가까운 요소를 더 쉽게 접근하고 간결하게 사용할 수 있습니다.

컬렉션의 끝에서 N번째 요소에 접근하는 것은 일반적인 작업입니다. 하지만 기존의 방법들은 my_array[my_array.length - N]처럼 길거나 my_array.slice(-N)[0]처럼 성능에 영향을 줄 수 있습니다. 새로운 at 메서드는 이 작업을 더 편리하게 만들어주며, 음수를 인덱스 값으로 사용하면 "끝에서부터"를 의미하게 해줍니다. 이전 예제들은 my_array.at(-N)으로 표현할 수 있습니다.

일관성을 위해 양의 인덱스도 지원되며, 이는 기존의 속성 접근과 동일합니다.

이 새로운 메서드는 아래의 준수 폴리필 구현에서 보여지는 바와 같이 작은 기능으로, 전체 동작을 이해할 수 있습니다:

function at(n) {
// 인수를 정수로 변환
n = Math.trunc(n) || 0;
// 끝에서부터의 인덱싱 허용
if (n < 0) n += this.length;
// 범위를 벗어난 접근은 undefined를 반환
if (n < 0 || n >= this.length) return undefined;
// 그렇지 않으면 기본적인 속성 접근과 동일
return this[n];
}

문자열에 대한 한마디

at가 궁극적으로 일반적인 인덱싱을 수행하기 때문에, String 값에서 at를 호출하면 기본 인덱싱과 마찬가지로 코드 유닛을 반환합니다. 그리고 문자열에서의 일반적인 인덱싱과 마찬가지로, 코드 유닛은 유니코드 문자열에서 원하는 결과가 아닐 수 있습니다! 사용 사례에 따라 String.prototype.codePointAt()이 더 적합한지 확인하세요.

at 메서드 지원