MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-dev-survey

현재 번역은 완벽하지 않습니다. 한국어로 문서 번역에 동참해주세요.

요약

Array.prototype 속성은 배열 생성자를 위한 프로토타입을 나타내고 모든 배열 객체에 새로운 속성과 메서드를 추가할 수 있습니다.

// 만약 자바스크립트(Array)가 first() 메서드를 기본적으로 제공하지 않는다면
// 배열의 첫 번째 요소를 반환하는 새로운 메서드를 추가합니다.

if (!Array.prototype.first) {
  Array.prototype.first = function() {
    return this[0];
  }
}
Property attributes of Array.prototype
Writable no
Enumerable no
Configurable no

설명

Array 인스턴스는 Array.prototype을 상속받습니다. 모든 생성자와 마찬가지로 모든 Array 인스턴스를 변경하는 생성자의 프로토타입 객체를 변경할 수 있습니다. 예를 들어 모든 배열 객체를 확장하는 새로운 메서드와 속성을 추가할 수 있습니다. 예를 들어 polyfilling에 사용됩니다.

거의 알려지지 않은 사실: Array.prototype 자체는 Array이다:

Array.isArray(Array.prototype); // true

속성

Array.prototype.constructor
객체의 프로토타입을 생성하는 함수를 지정합니다.
Array.prototype.length
배열에서 요소의 개수를 나타냅니다.
Array.prototype[@@unscopables]
with 결속 범위로부터 제외하려는 속성 이름이 들어있는 기호입니다.

메서드

변경자 메서드

변경자 메서드는 배열을 수정합니다:

Array.prototype.copyWithin()
배열 내의 지정된 요소들을 동일한 배열 내에서 복사합니다.
Array.prototype.fill()
배열 안의 시작 인덱스부터 끝 인덱스까지의 요소값을 지정된 정적 값으로 채웁니다.
Array.prototype.pop()
배열에서 마지막 요소를 뽑아내고, 그 요소를 반환합니다.
Array.prototype.push()
배열의 끝에 하나 이상의 요소를 추가하고, 변경된 배열의 길이를 반환합니다.
Array.prototype.reverse()
배열의 요소 순서를 반전시킵니다. - 첫 번째가 마지막이 되고 마지막이 첫 번째가 됩니다.
Array.prototype.shift()
배열에서 첫 번째 요소를 삭제하고 그 요소를 반환합니다.
Array.prototype.sort()
배열의 요소를 정렬하고 그 배열을 반환합니다.
Array.prototype.splice()
배열에서 요소를 추가/삭제합니다.
Array.prototype.unshift()
배열의 앞에 하나 이상의 요소를 추가하고 새로운 길이를 반환합니다.

접근자 메서드

접근자 메서드는 배열을 수정하지 않고 배열 일부를 반환합니다.

Array.prototype.concat()
배열과, 인자로 주어진 배열/값을 결합해 새로운 배열을 만들고, 이 새 배열을 반환합니다.
Array.prototype.includes()
배열에 특정 요소가 포함돼있는지 알아내어 true 또는 false를 적절히 반환합니다.
Array.prototype.indexOf()
배열에서 지정한 값과 같은 요소의 첫 인덱스를 반환합니다. 없으면 -1을 반환합니다.
Array.prototype.join()
배열의 모든 요소를 문자열로 변환하여 합칩니다.
Array.prototype.lastIndexOf()
배열에서 지정한 값과 같은 요소의 마지막 인덱스를 반환합니다. 없으면 -1을 반환합니다.
Array.prototype.slice()
배열의 일부를 추출한 새 배열을 반환합니다.
Array.prototype.toSource()
지정한 배열을 나타내는 배열 리터럴을 반환합니다.새로운 배열을 만들기 위해 이 값을 사용할 수 있습니다.
Array.prototype.toString()
배열과 요소를 반환하는 문자열을 반환합니다. Object.prototype.toString() 메서드를 재정의합니다.
Array.prototype.toLocaleString()
배열과 요소를 나타내는 지역화된 문자열을 반환합니다. Object.prototype.toLocaleString() 메서드를 재정의합니다.
 

반복 메서드

배열을 처리하는 동안, 각각의 배열요소에 대해 (인자로 주어진) call back 함수를 호출하는 메서드가 몇 개 있습니다. 이러한 메서드들은 메서드의 호출시점에 배열의 길이를 확인한 후, 그 길이까지의 배열요소에 대해서만 call back함수를 수행하며,  콜백 중에 추가된 배열 요소(메서드 호출시점에 확인된 길이보다 더 큰 인덱스값을 갖는 요소들)에 대해서는 call back 함수를 수행하지 않습니다. 만약 메서드의 실행 도중에  배열의 변경(요소의 값 설정 또는 배열요소를 삭제하는 등)이 발생하고, 이런 변경이후에 메서드가 해당 배열 요소에 대해 call back함수를 호출하게 되면  작업 결과에 영향을 줄 수도 있습니다. 이러한 사례들에 있어 메서드들의 구체적인 동작은 잘 정의되어 있지만, 당신의 코드를 읽을 다른 사람들이 혼란스럽지 않게 해야 합니다. 만약 이런 메서드를 이용해 배열을 변경해야한다면, 원본 배열 대신 새로운 배열로 값을 복사하는 방식으로 처리하십시오.

Array.prototype.entries()
배열의 각 인덱스에 대한 키/값 쌍을 포함하는 새로운 배열 반복자 객체를 반환합니다.
Array.prototype.every()
만약 배열의 모든 요소가 제공된 검사 함수를 만족하면 true를 반환합니다.
Array.prototype.filter()
주어진 필터링 함수의 값의 결과가 참인 경우의 배열 요소들만으로 새로운 배열을 생성하여 반환합니다
Array.prototype.find()
주어진 테스팅 함수의 요구조건을 만족하는 배열 요소를 반환합니다. 그러한 배열요 요소가 없으면  undefined를 반환합니다.
Array.prototype.findIndex()
주어진 테스트 함수를 만족하는 배열의 첫 번째 요소에 대한 인덱스를 반환합니다. 그렇지 않으면 -1이 리턴됩니다.
Array.prototype.forEach()
배열의 각각의 요소에 함수를 호출합니다.
Array.prototype.keys()
배열의 각 인덱스에 대한 key들을 가지는 새로운 Array Iterator 객체를 반환합니다.
Array.prototype.map()
배열 내의 모든 요소 각각에 대하여  제공된 함수(callback)를 호출하고, 그 결과를 모아서  만든 새로운 배열을 반환합니다.
Array.prototype.reduce()
배열의 각 값에 대해 왼쪽에서 오른쪽으로 함수를 적용하여 단일 값으로 줄입니다.
Array.prototype.reduceRight()
배열의 각 값에 대해 오른쪽에서 왼쪽으로 함수를 적용하여 단일 값으로 줄입니다.
Array.prototype.some()
R배열중의 적어도 한 요소가 테스팅 함수를 만족시킨 다면 true를 반환합니다.
Array.prototype.values()
배열의 요소값들에 대한 Array Iterator 객체를 반환합니다.
Array.prototype[@@iterator]()
배열의 요소값들에 대한 Array Iterator 객체를 반환합니다.

제네릭 메서드(비표준)

M자바스크립트 배열 객체의 많은 메서드들은 일반적으로 "배열같은" 모든 객체에 적용되도록 설계되었습니다.  즉, length 속성을 가지고 있으며 동시에 숫자로 된 속성이름(array[5] 같은 형식)을 사용가능한 객체에 대해서 이 메서드들을 사용할 수 있다는 의미입니다.  join같은 일부의 메서드들은 length 값과 숫자값으로 된 속성값을 단지 읽어서 사용할 수 있으면 됩니다.  하지만 reverse같은 메서드들은 객체의 숫자값 속성과 length값이 변경가능(mutable)해야합니다; 때문에 이런 메서드들은 String같이 length 속성값이나 숫자속성값을 변경할 수 없는 객체들에 대해서는 호출될 수 없습니다.

명세

Specification Status Comment
ECMAScript 1st Edition (ECMA-262) Standard Initial definition.
ECMAScript 5.1 (ECMA-262)
The definition of 'Array.prototype' in that specification.
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Array.prototype' in that specification.
Standard Added the copyWithin(), fill(), entries(), keys(), values(), find(), findIndex() methods.
ECMAScript Latest Draft (ECMA-262)
The definition of 'Array.prototype' in that specification.
Draft Added the includes() method.

브라우저 호환성

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
Basic support (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)
Feature Android Chrome for Android Edge Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support (Yes) (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)

See also

문서 태그 및 공헌자

 이 페이지의 공헌자: sominlee, HanuLatte, teoli
 최종 변경: sominlee,