Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

ฟังก์ชัน ArrayBuffer.isView() ใน JavaScript

ArrayBuffer.isView() คืออะไร

เมธอดสแตติก ArrayBuffer.isView() ใช้สำหรับ ตรวจสอบว่าค่าที่ส่งเข้ามาเป็น "view" ของ ArrayBuffer หรือไม่ โดย "view" ในที่นี้หมายถึงออบเจ็กต์ที่มองข้อมูลใน ArrayBuffer ผ่านมุมมองที่แตกต่างกัน ได้แก่:

  • Typed Arrays: Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array, BigInt64Array, BigUint64Array
  • DataView: DataView

ไวยากรณ์ (Syntax)

ArrayBuffer.isView(arg)
  • arg - ค่าที่ต้องการตรวจสอบ

คืนค่า: true หาก arg เป็น typed array หรือ DataView, false หากไม่ใช่

ตัวอย่างการใช้งาน

ตัวอย่างที่ 1: ตรวจสอบ Typed Arrays

console.log(ArrayBuffer.isView(new Int8Array()));       // true
console.log(ArrayBuffer.isView(new Uint8Array(10)));    // true
console.log(ArrayBuffer.isView(new Uint8ClampedArray())); // true
console.log(ArrayBuffer.isView(new Int16Array()));      // true
console.log(ArrayBuffer.isView(new Uint16Array()));     // true
console.log(ArrayBuffer.isView(new Int32Array()));      // true
console.log(ArrayBuffer.isView(new Uint32Array()));     // true
console.log(ArrayBuffer.isView(new Float32Array()));    // true
console.log(ArrayBuffer.isView(new Float64Array()));    // true
console.log(ArrayBuffer.isView(new BigInt64Array()));   // true
console.log(ArrayBuffer.isView(new BigUint64Array()));  // true

ตัวอย่างที่ 2: ตรวจสอบ DataView

const buffer = new ArrayBuffer(16);
const dataView = new DataView(buffer);
console.log(ArrayBuffer.isView(dataView)); // true

ตัวอย่างที่ 3: ค่าที่คืน false

console.log(ArrayBuffer.isView([]));           // false (regular array)
console.log(ArrayBuffer.isView({}));           // false (plain object)
console.log(ArrayBuffer.isView(null));         // false
console.log(ArrayBuffer.isView(undefined));    // false
console.log(ArrayBuffer.isView(123));          // false
console.log(ArrayBuffer.isView("string"));     // false
console.log(ArrayBuffer.isView(new ArrayBuffer(10))); // false (ArrayBuffer เองไม่ใช่ view)
console.log(ArrayBuffer.isView(() => {}));     // false (function)

ตัวอย่างที่ 4: การใช้งานจริง - Validation Function

function processBufferView(view) {
  if (!ArrayBuffer.isView(view)) {
    throw new TypeError('Expected an ArrayBuffer view (TypedArray or DataView)');
  }
  
  // ทำงานกับ view ได้อย่างปลอดภัย
  console.log(`Processing ${view.constructor.name} of length ${view.byteLength}`);
  
  if (view instanceof DataView) {
    // DataView specific logic
  } else {
    // TypedArray specific logic
  }
}

// ทดสอบ
processBufferView(new Uint8Array(10)); // OK
processBufferView(new DataView(new ArrayBuffer(10))); // OK
processBufferView([1,2,3]); // TypeError

ตารางสรุป: อะไรคือ View, อะไรไม่ใช่

ประเภทตัวอย่างisView()
Typed Arrays (ทั้งหมด)Int8Array, Uint8Array, Float32Array, BigInt64Array, etc.true
DataViewnew DataView(buffer)true
ArrayBuffernew ArrayBuffer(10)false
Regular Array[1,2,3]false
Plain Object{a: 1}false
Null / Undefinednull, undefinedfalse
Primitive values123, "str", truefalse

กรณีการใช้งานทั่วไป

  • Input validation: ตรวจสอบ argument ในฟังก์ชันที่รับ ArrayBuffer view
  • Polymorphic functions: ฟังก์ชันที่รับทั้ง TypedArray และ DataView
  • Serialization: ตรวจสอบก่อน serialize binary data
  • Debugging: ตรวจสอบประเภทออบเจ็กต์ในระหว่างพัฒนา