TypedArray 객체는 밑에 깔린 이진 데이터 버퍼의 배열 같은 뷰를 기술합니다. TypedArray
인 전역 속성도 눈에 직접 보이는 TypedArray
생성자도 없습니다. 대신 다양한 전역 속성이 있습니다, 그 값이 아래 나열된 특정 요소 유형에 대한 형식화 배열 생성자인. 다음 페이지에서 각 유형 요소를 포함하는 모든 형식화 배열에 쓰일 수 있는 공통 속성 및 메서드를 찾을 수 있습니다.
구문
new TypedArray(length); new TypedArray(typedArray); new TypedArray(object); new TypedArray(buffer [, byteOffset [, length]]); TypedArray()는 다음 중 하나입니다: Int8Array(); Uint8Array(); Uint8ClampedArray(); Int16Array(); Uint16Array(); Int32Array(); Uint32Array(); Float32Array(); Float64Array();
매개변수
- length
length
인수와 함께 호출하면 메모리상에 길이에 BYTES_PER_ELEMENT bytes(바이트)를 곱한 크기만큼의, 0을 포함한 이진 데이터 버퍼를 생성합니다.- typedArray
typedArray
인수와 함께 호출하면, 모든 형식화 배열 객체 유형(가령Int32Array
)이 될 수 있는,typedArray
는 새로운 형식화 배열로 복사됩니다.typedArray
내 각 값은 새로운 배열로 복사되기 전에 해당 유형의 생성자로 변환됩니다.- object
object
인수와 함께 호출하면, 새로운 형식화 배열이 마치TypedArray.from()
메서드에 의해서처럼 생성됩니다.- buffer, byteOffset, length
buffer
와 선택 사항으로byteOffset
및length
인수와 함께 호출하면, 새로운 형식화 배열 뷰는 지정된ArrayBuffer
뷰로 생성됩니다.byteOffset
및length
매개변수는 형식화 배열 뷰에 의해 노출되는 메모리 범위를 지정합니다. 둘 다 생략된 경우,buffer
가 모두 보입니다;length
만 생략된 경우,buffer
의 나머지가 보입니다.
설명
ECMAScript 6는 모든 TypedArray 생성자의 [[Prototype]]
역할을 하는 TypedArray 생성자를 정의합니다. 이 생성자는 직접 노출되지 않습니다: 전역 %TypedArray%
또는 TypedArray
속성은 없습니다. Object.getPrototypeOf(Int8Array.prototype)
및 비슷한 방식을 통해서만 직접 접근할 수 있습니다. 모든 TypedArray 생성자는 %TypedArray%
생성자 함수로부터 공통 속성을 상속합니다. 게다가, 모든 형식화 배열 프로토타입(TypedArray.prototype
)은 자기 [[Prototype]]
으로서 %TypedArray%.prototype
이 있습니다.
%TypedArray%
생성자 자체로는 특별히 유용한 것은 아닙니다. 호출하거나 new
식으로 사용하면 TypeError
가 발생합니다, 서브클래싱을 지원하는 JS 엔진에서 객체 생성 도중 사용될 때 빼고는. 현재로서는 그러한 엔진이 없기에 %TypedArray%
는 모든 TypedArray 생성자에 함수 또는 속성을 폴리필할 때만 유용합니다.
속성 접근
표준 배열 인덱스 구문(즉, 각괄호 표기법)을 써서 배열의 요소를 참조할 수 있습니다. 그러나, 형식화 배열에 인덱스 있는 속성의 읽기(getting) 또는 쓰기(setting)는 이 속성에 대한 프로토타입 체인에서 찾을 수 없습니다, 심지어 인덱스가 범위 밖인 경우라도. 인덱스 있는 속성은 ArrayBuffer
를 조사하고 객체 속성을 조사하지는 않습니다. 여전히 유명 속성을 사용할 수 있습니다, 모든 객체와 마찬가지로.
// 표준 배열 구문을 사용해 쓰기 및 읽기
var int16 = new Int16Array(2);
int16[0] = 42;
console.log(int16[0]); // 42
// 프로토타입의 인덱스 있는 속성은 조사되지 않음 (Fx 25)
Int8Array.prototype[20] = "foo";
(new Int8Array(32))[20]; // 0
// 비록 범위 밖 또는
Int8Array.prototype[20] = "foo";
(new Int8Array(8))[20]; // undefined
// 음의 정수인 경우에도
Int8Array.prototype[-1] = "foo";
(new Int8Array(8))[-1]; // undefined
// 유명(named) 속성은 허용됨, 다만 (Fx 30) 에서지만
Int8Array.prototype.foo = "bar";
(new Int8Array(32)).foo; // "bar"
TypedArray 객체
유형 | 크기 (바이트) | 설명 | Web IDL 형 | 해당 C 형 |
Int8Array |
1 | 8비트 2의 보수 형식 부호 있는 정수 | byte |
int8_t |
Uint8Array |
1 | 8비트 부호 없는 정수 | octet |
uint8_t |
Uint8ClampedArray |
1 | 8비트 부호 없는 정수 (단속됨) | octet |
uint8_t |
Int16Array |
2 | 16비트 2의 보수 형식 부호 있는 정수 | short |
int16_t |
Uint16Array |
2 | 16비트 부호 없는 정수 | unsigned short |
uint16_t |
Int32Array |
4 | 32비트 2의 보수 형식 부호 있는 정수 | long |
int32_t |
Uint32Array |
4 | 32비트 부호 없는 정수 | unsigned long |
uint32_t |
Float32Array |
4 | 32비트 IEEE 부동 소수점 수 | unrestricted float |
float |
Float64Array |
8 | 64비트 IEEE 부동 소수점 수 | unrestricted double |
double |
속성
TypedArray.BYTES_PER_ELEMENT
- 서로 다른 형식화 배열 객체에 대해 요소 크기의 숫자값을 반환합니다.
- TypedArray.length
- 값이 3인 길이 속성.
TypedArray.name
- 생성자 이름의 문자열 값을 반환합니다. 가령 "Int8Array".
get TypedArray[@@species]
- 파생된 객체를 생성하는데 쓰이는 생성자 함수.
TypedArray.prototype
- TypedArray 객체에 대한 프로토타입.
메서드
TypedArray.from()
- 배열 같은 또는 반복가능(iterable) 객체로부터 새로운 형식화 배열을 생성합니다.
Array.from()
도 참조. TypedArray.of()
- 가변(variable) 인수로 새로운 형식화 배열을 생성합니다.
Array.of()
도 참조.
TypedArray 프로토타입
모든 TypedArray는 TypedArray.prototype
을 상속합니다.
속성
TypedArray.prototype.constructor
- 인스턴스의 프로토타입을 만든 함수를 반환합니다. 이는 기본으로 해당 TypedArray 객체 유형 함수 중 하나입니다.
TypedArray.prototype.buffer
Read only- 형식화 배열에 의해 참조되는
ArrayBuffer
를 반환합니다. 생성 시에 고정되기에 읽기 전용. TypedArray.prototype.byteLength
Read onlyArrayBuffer
의 시작점부터 형식화 배열의 길이(단위 바이트)를 반환합니다. 생성 시에 고정되기에 읽기 전용.TypedArray.prototype.byteOffset
Read onlyArrayBuffer
의 시작점부터 형식화 배열의 오프셋(단위 바이트)을 반환합니다. 생성 시에 고정되기에 읽기 전용.TypedArray.prototype.length
Read only- 형식화 배열 내 보유한 요소의 수를 반환합니다. 생성 시에 고정되기에 읽기 전용.
메서드
TypedArray.prototype.copyWithin()
- 배열 내부 일련의 배열 요소를 복사합니다.
Array.prototype.copyWithin()
도 참조. TypedArray.prototype.entries()
- 배열 내 각 인덱스에 대한 키/값 쌍을 포함하는 새로운
Array Iterator
객체를 반환합니다.Array.prototype.entries()
도 참조. TypedArray.prototype.every()
- 배열의 모든 요소가 함수로 제공되는 테스트를 통과하는지를 테스트합니다.
Array.prototype.every()
도 참조. TypedArray.prototype.fill()
- 시작 인덱스부터 끝 인덱스까지 배열의 모든 요소를 고정값으로 채웁니다.
Array.prototype.fill()
도 참조. TypedArray.prototype.filter()
- 제공되는 필터링 함수가 true를 반환하는 이 배열의 모든 요소를 갖는 새로운 배열을 생성합니다.
Array.prototype.filter()
도 참조. TypedArray.prototype.find()
- 배열 내 요소가 제공되는 테스트 함수를 만족하는 경우 배열 내 찾은 값 또는 못 찾은 경우
undefined
를 반환합니다.Array.prototype.find()
도 참조. TypedArray.prototype.findIndex()
- 배열 내 요소가 제공되는 테스트 함수를 만족하는 경우 배열 내 찾은 인덱스 또는 못 찾은 경우 -1을 반환합니다.
Array.prototype.findIndex()
도 참조. TypedArray.prototype.forEach()
- 배열 내 각 요소에 대해 함수를 호출합니다.
Array.prototype.forEach()
도 참조. TypedArray.prototype.includes()
- 형식화 배열이 특정 요소를 포함하는지를 판단해, 적절히
true
또는false
를 반환합니다.Array.prototype.includes()
도 참조. TypedArray.prototype.indexOf()
- 지정된 값과 같은 배열 내부 요소의 첫(최소) 인덱스 또는 못 찾은 경우 -1을 반환합니다.
Array.prototype.indexOf()
도 참조. TypedArray.prototype.join()
- 배열의 모든 요소를 문자열로 합칩니다.
Array.prototype.join()
도 참조. TypedArray.prototype.keys()
- 배열의 각 인덱스에 대한 키를 포함하는 새로운
Array Iterator
를 반환합니다.Array.prototype.keys()
도 참조. TypedArray.prototype.lastIndexOf()
- 지정된 값과 같은 배열 내부 요소의 끝(최대) 인덱스 또는 못 찾은 경우 -1을 반환합니다.
Array.prototype.lastIndexOf()
도 참조. TypedArray.prototype.map()
- 이 배열의 모든 요소에 제공된 함수를 호출한 결과를 갖는 새로운 배열을 생성합니다.
Array.prototype.map()
도 참조. TypedArray.prototype.move()
UnimplementedTypedArray.prototype.copyWithin()
의 이전 비표준 버전.TypedArray.prototype.reduce()
- 누산기(accumulator) 및 배열의 각 값(좌에서 우로)에 대해 한 값으로 줄도록 함수를 적용합니다.
Array.prototype.reduce()
도 참조. TypedArray.prototype.reduceRight()
- 누산기 및 배열의 각 값(우에서 좌로)에 대해 한 값으로 줄도록 함수를 적용합니다.
Array.prototype.reduceRight()
도 참조. TypedArray.prototype.reverse()
- 배열 요소의 순서를 뒤집습니다 — 처음이 마지막이 되고 마지막이 처음이 됩니다.
Array.prototype.reverse()
도 참조. TypedArray.prototype.set()
- 형식화 배열에 여러 값을 저장합니다, 지정된 배열에서 입력 값을 읽어.
TypedArray.prototype.slice()
- 배열의 한 부분을 추출하여 새로운 배열을 반환합니다.
Array.prototype.slice()
도 참조. TypedArray.prototype.some()
- 이 배열의 적어도 한 요소가 제공된 테스트 함수를 만족하는 경우 true를 반환합니다.
Array.prototype.some()
도 참조. TypedArray.prototype.sort()
- 배열의 요소를 적소에 정렬해 그 배열을 반환합니다.
Array.prototype.sort()
도 참조. TypedArray.prototype.subarray()
- 주어진 시작 및 끝 요소 인덱스로부터 새로운 TypedArray를 반환합니다.
TypedArray.prototype.values()
- 배열의 각 인덱스에 대한 값을 포함하는 새로운
Array Iterator
객체를 반환합니다.Array.prototype.values()
도 참조. TypedArray.prototype.toLocaleString()
- 배열 및 그 요소를 나타내는 지역화된 문자열을 반환합니다.
Array.prototype.toLocaleString()
도 참조. TypedArray.prototype.toString()
- 배열 및 그 요소를 나타내는 문자열을 반환합니다.
Array.prototype.toString()
도 참조. TypedArray.prototype[@@iterator]()
- 배열의 각 인덱스에 대한 값을 포함하는 새로운
Array Iterator
객체를 반환합니다.
스펙
스펙 | 상태 | 설명 |
---|---|---|
Typed Array Specification | Obsolete | 형식화 배열 뷰 유형이 있는 TypedArray 및 ArrayBufferView 인터페이스로 정의됨. ECMAScript 6로 대체됨. |
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'TypedArray Objects' in that specification. |
Standard | ECMA 표준에서 초기 정의. 인덱스 있고 유명 속성에 대한 행동이 지정됨. new 가 필요함이 지정됨. |
ECMAScript Latest Draft (ECMA-262) The definition of 'TypedArray Objects' in that specification. |
Draft |
브라우저 호환성
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | 7.0 | 4.0 (2) | 10 | 11.6 | 5.1 |
Indexed properties not consulting prototype | (Yes) [1] | 25 (25) | ? | ? | ? |
Named properties | (Yes) | 30 (30) | ? | ? | ? |
new is required |
? | 44 (44) | ? | ? | ? |
Feature | Android | Android Webview | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
---|---|---|---|---|---|---|---|
Basic support | 4.0 | (Yes) | 4.0 (2) | 10 | 11.6 | 4.2 | (Yes) |
Indexed properties not consulting prototype | ? | (Yes) [1] | 25.0 (25) | ? | ? | ? | (Yes) [1] |
Named properties | ? | (Yes) | 30.0 (30) | ? | ? | ? | ? |
new is required |
? | ? | 44.0 (44) | ? | ? | ? | ? |
[1] -1
과 비슷한 값은 인덱스 있는 속성으로 여겨지지 않기에 그 프로토타입 속성값을 반환합니다.
호환성 주의사항
ECMAScript 2015 (ES6)를 시작으로, TypedArray
생성자는 new
연산자로 생성되어야 합니다. new
없는 함수로서 TypedArray
생성자를 호출하면, 이제부터 TypeError
가 발생합니다.
var dv = Int8Array([1, 2, 3]);
// TypeError: new 없은 내장 Int8Array 생성자
// 호출은 금지됩니다
var dv = new Int8Array([1, 2, 3]);