คู่มืออ้างอิง JavaScript ตัวแปรจำลอง

JavaScript 类型化数组

在 Javascript 中,类型化数组是二进制数据的类似数组的缓冲区。

不存在名为 TypedArray 的 JavaScript 属性或对象,但属性和方法可以与类型化数组对象一起使用:

实例

const myArr = new Int8Array(10);

亲自试一试

类型化数组的对象

对象 数据类型 范围
Int8Array 有符号整数(字节) -128/127
Uint8Array 无符号整数(八位字节) 0/255
Uint8ClampedArray 无符号整数(八位字节) 0/255
Int16Array 短整数 -32768/32767
Uint16Array 无符号短整数 0/65535
Int32Array 有符号长整数 -231/231-1
Uint32Array 无符号长整数 0/232
Float32Array 浮点 - 7 位有效数字 1.2x10-38/3.4x1038
Float64Array 双精度浮点 - 16 位有效数字 5.0x10-324/1.8x10308
BigInt64Array 有符号大整数 -263/263-1
BigUint64Array BigUint64Array ไม่มีสัญลักษณ์ 0/264

คำอธิบาย

แบบจำแนกประเภทไม่ใช่ตัวเลข

การคำนวณของ isArray() บนแบบจำแนกประเภทคืนค่า false

แบบจำแนกประเภทไม่สนับสนุนหลายวิธีการของตัวเลข (เช่น push และ pop)

แบบจำแนกประเภทเป็นวัตถุที่คล้ายตัวเลข ใช้ในการจัดเก็บข้อมูลบีนารี่ในหน่วยความจำ

วิธีและคุณสมบัติของ Typed Array

วิธี/คุณสมบัติ คำอธิบาย
BYTES_PER_ELEMENT คำอธิบายของค่าที่ใช้เก็บตัวเลข
fill() กระจายค่าเดียวกันทั้งหมด
find() คืนองค์ประกอบแรกที่พึงเงื่อนไข
name คืนชื่อของแบบจำแนกประเภท
of() สร้างแบบจำแนกประเภทด้วยตัวเลข
some() ถ้าองค์ประกอบพึงเงื่อนไข ก็จะคืนค่า true

Uint8Array และ Uint8ClampedArray

ความแตกต่างระหว่าง Uint8Array และ Uint8ClampedArray อยู่ที่วิธีการเพิ่มค่า

ถ้าจะใส่ค่าของ Uint8ClampedArray ที่อยู่นอกขอบเขต 0-255 มันจะเรียกใช้ค่าเริ่มต้น 0 หรือ 255

แบบจำแนกประเภทจะเก็บค่าเพียง 8 บิตแรก

ข้อดีของแบบจำแนกประเภท

แบบจำแนกประเภทให้กำหนดวิธีการจัดการข้อมูลบีนารี่อย่างมีประสิทธิภาพ เหมือนกับการทำงานกับแบบจำแนกประเภทใน C

แบบจำแนกประเภทเป็นหน่วยความจำตรงเดียว ดังนั้น JavaScript สามารถส่งข้อมูลตรงไปยังฟังก์ชันที่ใช้ข้อมูลบีนารี่โดยไม่จำเป็นต้องเปลี่ยนแปลงข้อมูลเป็นรูปแบบอื่น

แบบจำแนกประเภทมีความเร็วสูงกว่าแบบจำแนกประเภททั่วไปมาก ใช้ในการส่งข้อมูลให้กับฟังก์ชันที่สามารถใช้ข้อมูลบีนารี่ (เกมคอมพิวเตอร์, WebGL, Canvas, API ไฟล์, API มีเดีย)

API บราวยสนองการใช้งานแบบแบบจำแนกประเภท

ตัวอย่าง Fetch API

fetch(url)
.then(request => request.arrayBuffer())
.then(arrayBuffer =>...);

Canvas ตัวอย่าง

const canvas = document.getElementById('my_canvas');
const context = canvas.getContext('2d');
const imageData = context.getImageData(0, 0, canvas.width, canvas.height);
const uint8ClampedArray = imageData.data;

การสนับสนุนบราวเซอร์

typedArray เป็นคุณสมบัติของ ECMAScript6 (ES6)

ทุกบราวเซอร์สมัยใหม่เกี่ยวข้องสนับสนุน ES6 (JavaScript 2015)

Chrome Edge Firefox Safari Opera
Chrome Edge Firefox Safari Opera
Yes Yes Yes Yes Yes

Internet Explorer 11 (และเวอร์ชั่นเก่ากว่า) ไม่สนับสนุน typedArray