Array.of()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.

array.of() 정적 메서드는 인자의 수나 유형에 관계없이 가변적인 수의 인자로부터 새로운 Array 인스턴스를 생성합니다.

시도해보기

구문

js
Array.of()
Array.of(element1)
Array.of(element1, element2)
Array.of(element1, element2, /* …, */ elementN)

매개변수

element1, …, elementN

배열을 생성할 때 사용할 요소.

반환 값

새로운 Array 객체.

설명

Array.of()Array() 생성자의 차이점은 단일 인수를 처리하는 데 있습니다. Array.of(7)는 단일 요소 7을 가진 배열을 생성하는 반면, Array(7)length 속성이 7인 빈 배열을 생성합니다. (이는 실제 undefined 값을 가진 슬롯이 아닌 7개의 빈 슬롯으로 구성된 배열을 의미합니다.)

js
Array.of(7); // [7]
Array(7); // array of 7 empty slots

Array.of(1, 2, 3); // [1, 2, 3]
Array(1, 2, 3); // [1, 2, 3]

Array.of() 메서드는 일반 팩토리 메서드입니다. 예를 들어, Array의 하위 클래스가 of() 메서드를 상속하는 경우, 상속된 of() 메서드는 Array 인스턴스 대신 하위 클래스의 새 인스턴스를 반환합니다. 실제로 this 값은 새 배열의 길이를 나타내는 단일 인수를 받는 생성자 함수가 될 수 있으며, 생성자는 of()에 전달된 인자 수로 호출됩니다. 최종 length는 모든 요소가 할당되면 다시 설정됩니다. this 값이 생성자 함수가 아닌 경우 일반 Array 생성자가 대신 사용됩니다.

예제

Array.of() 사용하기

js
Array.of(1); // [1]
Array.of(1, 2, 3); // [1, 2, 3]
Array.of(undefined); // [undefined]

배열이 아닌 생성자에서 of() 호출하기

of() 메서드는 새 배열의 길이를 나타내는 단일 인수를 받는 모든 생성자 함수에서 호출할 수 있습니다.

js
function NotArray(len) {
  console.log("NotArray called with length", len);
}

console.log(Array.of.call(NotArray, 1, 2, 3));
// NotArray 길이를 3으로 호출하였습니다.
// NotArray { '0': 1, '1': 2, '2': 3, length: 3 }

console.log(Array.of.call(Object)); // [Number: 0] { length: 0 }

this 값이 생성자가 아닐 때, 평범함 Array 객체가 생성됩니다.

js
console.log(Array.of.call({}, 1)); // [ 1 ]

명세서

Specification
ECMAScript Language Specification
# sec-array.of

브라우저 호환성

BCD tables only load in the browser

같이 보기