JavaScript ArrayBuffer ऑब्जेक्ट एक जेनेरिक, फिक्स्ड-लेंथ रॉ बाइनरी डेटा बफर को दर्शाने के लिए उपयोग किया जाता है। ArrayBuffer ऑब्जेक्ट की सामग्री को मैनिपुलेट करने के लिए हमें DataView ऑब्जेक्ट बनाना पड़ता है क्योंकि हम सामग्री को सीधे मैनिपुलेट नहीं कर सकते। हम DataView ऑब्जेक्ट का उपयोग करके पढ़ और लिख दोनों सकते हैं।
सिंटैक्स
new ArrayBuffer(byteSize)
byteSize पैरामीटर बाइट्स में ऐरे बफर का आकार निर्दिष्ट करता है जिसे बनाया जाएगा।
उदाहरण
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>ArrayBuffer ऑब्जेक्ट</title>
<style>
body { font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; }
.sample { font-size: 20px; font-weight: 500; }
</style>
</head>
<body>
<h1>JavaScript ArrayBuffer ऑब्जेक्ट</h1>
<div class="sample"></div>
<button class="Btn">यहां क्लिक करें</button>
<h3>ऊपर दिए गए बटन पर क्लिक करके ऐरे बफर ऑब्जेक्ट की सामग्री बाइनरी में देखें</h3>
<script>
let fillEle = document.querySelector(".sample");
var buffer = new ArrayBuffer(8);
var view1 = new DataView(buffer);
view1.setInt16(0, 0x2721);
fillEle.innerHTML = view1.getInt16(0).toString(16);
document.querySelector('.Btn').addEventListener('click', () => {
fillEle.innerHTML = view1.getInt16(0).toString(2);
});
</script>
</body>
</html>
आउटपुट

"यहां क्लिक करें" बटन पर क्लिक करने पर:

ArrayBuffer की मुख्य विशेषताएं:
- रॉ बाइनरी डेटा - कोई फॉर्मेट/एन्कोडिंग नहीं, सिर्फ बाइट्स
- फिक्स्ड साइज - निर्माण के बाद आकार नहीं बदल सकता
- डायरेक्ट एक्सेस नहीं - व्यू (DataView/TypedArray) के माध्यम से एक्सेस
- ट्रांसफरेबल - Web Workers के बीच जीरो-कॉपी ट्रांसफर के लिए
व्यू टाइप्स (ArrayBuffer को पढ़ने/लिखने के लिए):
| व्यू | उपयोग | एंडियन कंट्रोल |
|---|---|---|
| DataView | मल्टी-टाइप, एंडियन कंट्रोल के साथ | हाँ (get/set मेथड्स में) |
| TypedArrays | स्पेसिफिक टाइप (Int32Array, Float64Array, आदि) | नहीं (प्लेटफॉर्म एंडियन) |
DataView ऑपरेशन्स:
const buffer = new ArrayBuffer(8); const view = new DataView(buffer); // लिखना (दूसरा पैरामीटर: littleEndian = true/false) view.setInt8(0, 42); // 1 बाइट view.setInt16(1, 0x1234, true); // 2 बाइट्स, लिटिल एंडियन view.setInt32(3, 0x12345678, false); // 4 बाइट्स, बिग एंडियन view.setFloat32(7, 3.14, true); // 4 बाइट्स फ्लोट // पढ़ना view.getInt8(0); // 42 view.getInt16(1, true); // 0x1234 view.getInt32(3, false); // 0x12345678 view.getFloat32(7, true); // 3.14
TypedArray ऑपरेशन्स:
const buffer = new ArrayBuffer(16); const int32 = new Int32Array(buffer); int32[0] = 100; int32[1] = 200; console.log(int32[0]); // 100 // एक ही बफर पर मल्टीपल व्यूज const uint8 = new Uint8Array(buffer); console.log(uint8[0]); // 100 का पहला बाइट
उपयोग के मामले:
- फाइल अपलोड/डाउनलोड - बाइनरी फाइल हैंडलिंग
- नेटवर्क प्रोग्रामिंग - WebSocket बाइनरी फ्रेम्स
- इमेज/ऑडियो प्रोसेसिंग - Canvas, Web Audio API
- Web Workers - ट्रांसफरेबल ऑब्जेक्ट्स के साथ जीरो-कॉपी पासिंग
- क्रिप्टोग्राफी - Crypto API के साथ