آرایههای نوعدار (Typed Arrays) در جاوااسکریپت، اشیایی شبیه به آرایه هستند که سازوکاری را برای خواندن و نوشتن دادههای باینری خام (Raw Binary Data) در بافرهای حافظه (Memory Buffers) فراهم میکنند.
هدف از طراحی آرایههای نوعدار این نیست که برای هر نوع کارکردی جایگزین آرایههای معمولی جاوااسکریپت شوند. در عوض، این ابزار یک رابط کاربریِ آشنا (مشابه کار با آرایههای معمولی) را در اختیار توسعهدهندگان میگذارد تا بتوانند دادههای باینری را به راحتی دستکاری کنند.
این ویژگی زمانی بسیار کاربردی است که میخواهید با قابلیتهای اصلی پلتفرم و مرورگر تعامل داشته باشید؛ کارهایی مثل:
-
پردازش و دستکاری فایلهای صوتی و ویدیویی
-
دسترسی به دادههای خام از طریق سوکتها (WebSockets)
-
و سایر کارهای سطح پایین (Low-level) از این دست.
در یک آرایه نوعدار جاوااسکریپت، هر ورودی (خانه آرایه) یک مقدار باینری خام است که در یکی از فرمتهای پشتیبانیشده قرار میگیرد؛ این فرمتها طیف وسیعی دارند، از اعداد صحیح ۸ بیتی (8-bit integers) گرفته تا اعداد اعشاری ۶۴ بیتی (64-bit floating-point numbers).
تفاوت آرایههای نوعدار با آرایههای معمولی
اشیای آرایه نوعدار، بسیاری از متدهای خود را با آرایههای معمولی به اشتراک میگذارند و رفتار و معنای این متدها در هر دو بسیار شبیه به هم است. با این حال، نباید آرایههای نوعدار را با آرایههای معمولی اشتباه بگیرید! به عنوان مثال، اگر متد Array.isArray() را روی یک آرایه نوعدار صدا بزنید، خروجی آن false خواهد بود.
علاوه بر این، تمام متدهایی که برای آرایههای معمولی در دسترس هستند، در آرایههای نوعدار پشتیبانی نمیشوند (مثلاً متدهای معروفی مثل push و pop در آرایههای نوعدار وجود ندارند).
ساختار اصلی: بافرها و نماها (Buffers and Views)
جاوااسکریپت برای اینکه به حداکثر انعطافپذیری و کارایی (Efficiency) برسد، پیادهسازیِ آرایههای نوعدار را به دو بخش مجزا تقسیم کرده است: بافرها (Buffers) و نماها (Views).
-
بافر (Buffer): بافر (که با شیء
ArrayBufferشناخته میشود) شیئی است که یک تکه یا بلوک از دادههای خام حافظه را نشان میدهد. بافر خودش هیچ فرمت و قالب مشخصی ندارد و هیچ راه یا مکانیزمی هم برای دسترسی به محتویات داخلش به شما ارائه نمیدهد. -
نما (View): برای اینکه بتوانید به حافظه موجود در یک بافر دسترسی داشته باشید، حتماً باید از یک «نما» یا
Viewاستفاده کنید. نما در واقع یک فضا یا زمینه (Context) برای بافر ایجاد میکند؛ یعنی به بافر میگوید که دادهها از چه نوعی (Data Type) هستند، نقطه شروع خواندن یا همان آفست (Starting Offset) کجاست و کلاً شامل چند عنصر (Number of Elements) میشود.
این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: https://developer.mozilla.org/en-US/docs/Web/JavaScript