자바 스크립트 유형 배열

  • 자바 스크립트 유형 배열은 배열과 유사한 객체이며 원시 바이너리 데이터에 액세스하기위한 메커니즘을 제공합니다.
  • Array에 저장된 객체는 동적으로 증가 및 감소 할 수 있으며 모든 JavaScript 값을 저장할 수 있습니다. JavaScript 엔진은 내부 최적화를 수행하여 배열 작업이 매우 빠를 수 있습니다.

일반적으로 유형 배열은 일반적 으로 WebGL과 함께 사용되며 ArrayBuffer는 WebGL을 사용할 때 어디에나 있습니다. 브라우저는 WebGL을 통해 그래픽 카드와 통신하며, 이들간에 많은 양의 실시간 데이터 상호 작용이 발생하며 특히 성능 요구 사항이 높습니다. 이들 간의 데이터 통신기존 텍스트 형식이 아닌 성능 요구 사항을 충족하기 위해 바이너리 여야 합니다. .

버퍼 및 뷰 : 형식화 된 어레이 아키텍처

최대한의 유연성과 효율성을 달성하기 위해 JavaScript 유형 배열 (유형 배열)은 구현을 버퍼와 뷰의 두 부분으로 분할합니다. 버퍼 (ArrayBuffer 객체에 의해 구현 됨)는 데이터 블록을 설명합니다. 버퍼에는 형식이 전혀 없으며 콘텐츠에 액세스하는 메커니즘을 제공하지 않습니다. 버퍼 객체에 포함 된 메모리에 액세스하려면 뷰를 사용해야합니다 . 뷰는 데이터를 실제 형식화 된 배열로 변환하기위한 컨텍스트 (즉, 데이터 유형, 시작 오프셋 및 요소 수)를 제공합니다.
여기에 사진 설명 삽입

ArrayBuffer

ArrayBuffer는 범용 고정 길이 이진 데이터 버퍼를 나타내는 데 사용되는 데이터 유형입니다. ArrayBuffer의 내용을 직접 조작 할 수 없습니다 . 형식화 된 배열의 뷰 또는 버퍼 데이터 형식 설명하는 DataView 를 생성하고 이를 사용하여 버퍼의 내용을 읽고 쓸 수 있습니다.

데이터보기

DataView는 버퍼의 모든 데이터를 조작 할 수있는 읽기 및 쓰기 인터페이스를 제공하는 저수준 인터페이스입니다. 이는 다양한 유형의 데이터를 조작하는 시나리오에 매우 유용합니다. 예를 들어, typed array view는 모두 로컬 엔디안 모드 (Endianness 참조)에서 실행되며 엔디안은 DataView를 사용하여 제어 할 수 있습니다. 기본값은 Big-endian이지만 읽기 및 쓰기 인터페이스를 호출하여 Little-endian으로 변경할 수 있습니다.

사용 예 :

<script type="text/javascript">
	//创建一个16字节固定长度的缓冲
	var buffer = new ArrayBuffer(16);
	console.log("创建缓冲:")
	console.log(buffer)
	if (buffer.byteLength === 16) {
	  console.log("Yes, it's 16 bytes.");
	} else {
	  console.log("Oh no, it's the wrong size!");
	}
	// 创建视图
	// 此视图将把缓冲内的数据格式化为一个32位的有符号整数数组
	var int32View = new Int32Array(buffer);
	console.log("视图转换:")
	console.log(int32View)
	for (var i = 0; i < int32View.length; i++) {
	  int32View[i] = i * 2;
	}
	// 将类型化数组转换为普通数组
	var array = Array.from(int32View)
	console.log("普通数组:")
	console.log(array)
</script>

효과:
여기에 사진 설명 삽입

추천

출처blog.csdn.net/qq_36171287/article/details/111510183