در ØªÙØ³Ø¹ÙâÛ ÙØ¨Ø ٠ا ٠ع٠ÙÙØ§ ÙÙگا٠سرÙکار داشت٠با ÙØ§ÛÙâÙØ§(Ø³Ø§Ø®ØªÙØ Ø¨Ø§Ø±Ú¯Ø°Ø§Ø±Û Ú©Ø±Ø¯ÙØ داÙÙÙØ¯ کردÙ) ب٠دادÙâÙØ§Û Ø¯ÙØ¯ÙÛÛ Ø¨Ø±Ø®ÙØ±Ø¯ Ù ÛâÚ©ÙÛÙ . ÛÚ©Û Ø¯Ûگر از Ø§Ø³ØªÙØ§Ø¯ÙâÙØ§Û Ø±Ø§ÛØ¬ آ٠پردازش تصÙÛØ± Ù ÛâØ¨Ø§Ø´Ø¯.
ÙÙ ÙâÛ Ø§ÛÙâ Ù ÙØ§Ø±Ø¯ در Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت Ù Ù Ú©Ù Ø§Ø³ØªØ Ù Ø¹Ù ÙÛØ§ØªâÙØ§Û Ø¯ÙØ¯ÙÛÛ Ø¹Ù Ùکرد Ø¨Ø§ÙØ§ÛÛ Ø¯Ø§Ø±ÙØ¯.
ÙØ±ÚÙØ¯Ø Ø§ÙØ¯Ú©Û Ø§ØØªÙ Ø§Ù Ø§Ø´ØªØ¨Ø§Ù Ú©Ø±Ø¯Ù ÙØ¬Ùد Ø¯Ø§Ø±Ø¯Ø Ø²ÛØ±Ø§ Ú©ÙØ§Ø³âÙØ§Û Ø¨Ø³ÛØ§Ø±Û ÙØ¬Ùد Ø¯Ø§Ø±ÙØ¯. Ø¨Ø±Ø®Û Ø§Ø² Ø¢ÙâÙØ§ Ø¹Ø¨Ø§Ø±ØªÙØ¯ از:
ArrayBuffer,Uint8Array,DataView,Blob,File, etc.
دادÙâÙØ§Û Ø¯ÙØ¯ÙÛÛ Ø¯Ø± Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±ÛÙ¾ØªØ ÙØ³Ø¨Øª Ø¨Ù Ø³Ø§ÛØ± زباÙâÙØ§ Ø¨Ù Ø´Ú©Ù ØºÛØ±Ø§Ø³ØªØ§ÙØ¯Ø§Ø±Ø¯Û Ù¾ÛØ§Ø¯ÙâØ³Ø§Ø²Û Ø´Ø¯ÙâØ§ÙØ¯. ÙÙÛ ÙÙگاÙÛ Ú©Ù Ù Ø§ ÚÛØ²Ùا را ٠رتب Ù ÛâÚ©ÙÛÙ Ø ÙÙ Ù ÚÛØ² ÙØ³Ø¨ØªØ§ ساد٠٠ÛâØ´ÙØ¯.
Ø´Û Ø¯ÙØ¯ÙÛÛ Ù¾Ø§ÛÙ ArrayBuffer است â ÛÚ© اشار٠ب٠ÛÚ© ÙØ§ØÛÙâÛ Ù¾ÛÙØ³ØªÙâÛ ØØ§Ùظ٠با Ø·Ù٠ثابت.
آ٠را Ø¨Ù Ø´Ú©Ù Ø²ÛØ± Ù ÛâØ³Ø§Ø²ÛÙ :
let buffer = new ArrayBuffer(16); // ساخت ÛÚ© Ø¨Ø§ÙØ± با Ø·ÙÙ 16
alert(buffer.byteLength); // 16
اÛ٠کد ÛÚ© ØØ§ÙظÙâÛ Ù¾ÛÙØ³ØªÙ Ø¨Ù Ø§ÙØ¯Ø§Ø²Ù 16 Ø¨Ø§ÛØª را اختصاص Ù ÛâØ¯ÙØ¯ ٠آ٠را با ØµÙØ± Ù ÙØ¯Ø§Ø±Ø¯ÙÛ Ø§ÙÙÛÙ Ù ÛâÚ©ÙØ¯.
ArrayBuffer آراÛÙâØ§Û Ø§Ø² ÚÛØ²Û ÙÛØ³ØªØ¨ÛاÛÛØ¯ ÛÚ© Ù
ÙØ¨Ø¹ Ø§ØØªÙ
ا٠اشتبا٠کرد٠را Ø±ÙØ¹ Ú©ÙÛÙ
. ArrayBuffer ÙÛÚ Ø§Ø±ØªØ¨Ø§Ø·Û Ø¨Ø§ آراÛÙ ÙØ¯Ø§Ø±Ø¯:
- ÛÚ© Ø·Ù٠ثابت Ø¯Ø§Ø±Ø¯Ø Ù Ø§ ÙÙ ÛâØªÙØ§ÙÛ٠آ٠را Ú©Ù ÛØ§ Ø²ÛØ§Ø¯ Ú©ÙÛÙ .
- دÙÛÙØ§ ب٠ÙÙ Ø§Ù Ù ÛØ²Ø§Ù ØØ§Ùظ٠اشغا٠٠ÛâÚ©ÙØ¯.
- Ø¨Ø±Ø§Û Ø¯Ø³ØªØ±Ø³Û Ø¨Ù Ø¨Ø§ÛØªâÙØ§Û جداگاÙÙØ ÛÚ© Ø´Û âViewâ Ø¯Ûگر ÙØ§Ø²Ù
Ø§Ø³ØªØ ÙÙ
buffer[index].
ÛÚ© ÙØ§ØÛ٠از ØØ§Ùظ٠است. ÚÙ ÚÛØ²Û در Ø¢Ù Ø°Ø®ÛØ±Ù Ù
ÛâØ´ÙØ¯Ø ÙÛÚ Ø³Ø±ÙØ®Û ÙØ¬Ùد ÙØ¯Ø§Ø±Ø¯. ÙÙØ· ÛÚ© Ø¯ÙØ¨Ø§Ù٠خاÙÛ Ø§Ø² Ø¨Ø§ÛØªâÙØ§ ArrayBuffer
Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ
âViewâ Ù
ا Ø¨Ø§ÛØ¯ از ÛÚ© Ø´Û ØArrayBuffer Ø¨Ø±Ø§Û Ø¯Ø³ØªÚ©Ø§Ø±Û Ú©Ø±Ø¯Ù ÛÚ©
را Ù
ÛâØ¯ÙØ¯ ArrayBuffer است Ú©Ù ØªÙØ³ÛØ±Û Ø§Ø² Ø¨Ø§ÛØªâÙØ§Û Ø°Ø®ÛØ±Ù شد٠در âeyeglassesâ ÚÛØ²Û را در Ø®ÙØ¯ Ø°Ø®ÛØ±Ù ÙÙ
ÛâÚ©ÙØ¯. اÛÙ view ÛÚ© Ø´Û
:Ø¨Ø±Ø§Û Ù Ø«Ø§Ù
Uint8Arrayâ ٠اÙÙØ¯ ÛÚ© عدد جداگاÙÙ Ø¨Ø±Ø®ÙØ±Ø¯ Ù ÛâÚ©ÙØ¯ Ù Ù ÙØ§Ø¯Ûر ٠جاز آ٠از 0 تا 255 است.(ÛÚ© Ø¨Ø§ÛØª 8 Ø¨ÛØª است پس ÙÙØ· تا ÙÙ Ø§Ù Ù ÙØ¯Ø§Ø± را Ù ÛâØªÙØ§Ùد Ùگ٠دارد.). ب٠اÛÙ Ù ÙØ¯Ø§Ø± ÛÚ© عدد صØÛØ Ø¨Ø¯ÙÙâØ¹ÙØ§Ù ت 8-Ø¨ÛØªÛ Ú¯ÙØªÙ Ù ÛâØ´ÙØ¯ArrayBufferبا ÙØ± Ø¨Ø§ÛØª درUint16Arrayâ Ø¨Ø±Ø®Ùرد Ù ÛâÚ©ÙØ¯ Ú©Ù Ù ÙØ§Ø¯Ûر ٠جاز آ٠از 0 تا 65535 Ù ÛâØ¨Ø§Ø´Ø¯. ب٠آ٠ÛÚ© عدد صØÛØ Ø¨Ø¯ÙÙâØ¹ÙØ§Ù ت 16-Ø¨ÛØªÛ Ú¯ÙØªÙ Ù ÛâØ´ÙØ¯ integer با ÙØ± 2 Ø¨Ø§ÛØª ب٠عÙÙØ§Ù ÛÚ©Uint32Arrayâ Ø¨Ø±Ø®Ùرد Ù ÛâÚ©ÙØ¯ Ú©Ù Ù ÙØ§Ø¯Ûر ٠جاز آ٠از 0 تا 4294967295 Ù ÛâØ¨Ø§Ø´Ø¯. ب٠آ٠ÛÚ© عدد صØÛØ Ø¨Ø¯ÙÙâØ¹ÙØ§Ù ت 32-Ø¨ÛØªÛ Ú¯ÙØªÙ Ù ÛâØ´ÙØ¯ integer با ÙØ± 4 Ø¨Ø§ÛØª ب٠عÙÙØ§Ù ÛÚ©Float64Arrayâ Ù ÛâØ¨Ø§Ø´Ø¯1.8x10308تا5.0x10-324Ø±ÙØªØ§Ø± Ù ÛâÚ©ÙØ¯ Ù Ù ÙØ§Ø¯Ûر ٠جاز آ٠از float با ÙØ± 8 Ø¨Ø§ÛØª ب٠عÙÙØ§Ù ÛÚ© عدد
با Ø¯ÙØª Ø¨Ø§ÙØ§(ÙØ± کداÙ
8 Ø¨Ø§ÛØª) ØªÙØ³Ûر Ø´ÙØ¯ float ÛÛ Ø¨Ø§ Ø§ÙØ¯Ø§Ø²ÙâÛ 16 Ø¨Ø§ÛØªØ Ù
ÛâØªÙØ§Ùد ب٠عÙÙØ§Ù 16 عدد Ú©ÙÚÚ© ÛØ§ 8 عدد Ø¨Ø²Ø±Ú¯âØªØ± (ÙØ± کداÙ
2 Ø¨Ø§ÛØª) ÛØ§ 4 عدد Ø¨Ø²Ø±Ú¯âØªØ± از ÙØ¨ÙÛ(ÙØ± کداÙ
4 Ø¨Ø§ÛØª) ÛØ§ 2 عدد ArrayBuffer Ø¨ÙØ§Ø¨Ø±Ø§ÛÙØ ÛÚ© دادÙâÛ Ø¯ÙØ¯ÙÛÛ Ø¯Ø±ÙÙ
Ø´Û Ø§ØµÙÛØ Ø±ÛØ´ÙâÛ ÙÙ
Ù ÚÛØ² ٠دادÙâÛ Ø¨Ø§ÛÙØ±Û خاÙ
است ArrayBuffer
٠اÙÙØ¯ Ø²ÛØ± Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ view ا٠ا اگر Ø¨Ø®ÙØ§ÙÛÙ ÙØ± ع٠ÙÛØ§ØªÛ رÙÛ Ø¢Ù Ø§ÙØ¬Ø§Ù دÙÛÙ Ø Ø§Ø² ج٠ÙÙØ در آ٠بÙÙÛØ³ÛÙ Ø ÛØ§ آ٠را Ù¾ÛÙ Ø§ÛØ´ کتÛÙ â Ø¨Ø§Ûد از ÛÚ©
let buffer = new ArrayBuffer(16); // ساخت ÛÚ© Ø¨Ø§ÙØ± با Ø·ÙÙ 16
let view = new Uint32Array(buffer); // Ø±ÙØªØ§Ø± با Ø¨Ø§ÙØ± Ù
اÙÙØ¯ ÛÚ© Ø¯ÙØ¨Ø§Ù٠از اعداد صØÛØ 32 Ø¨ÛØªÛ
alert(Uint32Array.BYTES_PER_ELEMENT); // Ø¨Ù Ø§Ø²Ø§Û ÙØ± عدد صØÛØØ 4 Ø¨Ø§ÛØª
alert(view.length); // 4, ب٠اÛ٠تعداد عدد صØÛØ Ø¯Ø± Ø®ÙØ¯ Ø°Ø®ÛØ±Ù Ù
ÛâÚ©ÙØ¯
alert(view.byteLength); // 16, Ø§ÙØ¯Ø§Ø²ÙâÛ Ø¨Ø§ÛØªâÙØ§
// ÙÙØ´ØªÙ ÛÚ© Ù
ÙØ¯Ø§Ø±
view[0] = 123456;
// Ù¾ÛÙ
Ø§ÛØ´ رÙÛ Ù
ÙØ§Ø¯Ûر
for(let num of view) {
alert(num); // ابتدا 123456 سپس 0 Ù 0 Ù 0(در Ù
جÙ
ÙØ¹ 4 Ù
ÙØ¯Ø§Ø±)
}
TypedArray
Ø§ØµØ·ÙØ§Ø Ø±Ø§ÛØ¬ Ø¨Ø±Ø§Û ØªÙ
اÙ
Û Ø§ÛÙ viewÙØ§ (Uint8Array Ù Unit32Array Ù ØºÛØ±Ù) TypedArray Ù
ÛâØ¨Ø§Ø´Ø¯. Ø¢ÙâÙØ§ Ù
ØªØ¯ÙØ§ Ù ÙÛÚÚ¯ÛâÙØ§Û ÛکساÙÛ Ø¯Ø§Ø±ÙØ¯.
ÙØ·Ùا ب٠خاطر Ø¯Ø§Ø´ØªÙ Ø¨Ø§Ø´ÛØ¯ Ú©Ù ÙÛÚ Ø³Ø§Ø²ÙØ¯ÙâØ§Û Ø¨Ø§ عÙÙØ§Ù TypedArray ÙØ¬Ùد ÙØ¯Ø§Ø±Ø¯ ٠اÛÙ ÙÙØ· ÛÚ© Ø§ØµØ·ÙØ§Ø Ø±Ø§ÛØ¬ Ø¨Ø±Ø§Û Ù¾ÙØ´Ø´ ÛÚ©Û Ø§Ø² viewÙØ§Û Ù
ÙØ¶Ùع گستردÙâÛ ArrayBuffer Ù
ÛâØ¨Ø§Ø´Ø¯: Int8Array Ù Uint8Array ٠ب٠ÙÙ
ÛÙ ØªØ±ØªÛØ¨Ø ÙÛØ³Øª کاÙ
Ù Ø¨Ù Ø²ÙØ¯Û ارائ٠Ù
ÛâØ´ÙØ¯.
ÙØ±Ú¯Ø§Ù ÚÛØ²Û Ù
اÙÙØ¯ new TypedArray Ù
Ø´Ø§ÙØ¯Ù Ú©Ø±Ø¯ÛØ¯Ø اÛ٠عبارت ب٠Ù
Ø¹ÙØ§Û ÙØ±Ú©Ø¯Ø§Ù
از new Int8ArrayØ new Uint8Array Ù ØºÛØ±Ù Ù
ÛâØ¨Ø§Ø´Ø¯.
آراÛÙâÙØ§Û Typed ٠اÙÙØ¯ آراÛÙâÙØ§Û Ø¹Ø§Ø¯Û Ø±ÙØªØ§Ø± Ù ÛâÚ©ÙÙØ¯: Ø¯Ø§Ø±Ø§Û Ø§ÙØ¯ÛØ´ ÙØ³ØªÙد Ù ÙØ§Ø¨Ù Ù¾ÛÙ Ø§ÛØ´ Ù ÛâØ¨Ø§Ø´ÙØ¯.
ÛÚ© Ø³Ø§Ø²ÙØ¯ÙâÛ Ø¢Ø±Ø§ÛÙâÛ Typed(Ù
ÛâØªÙØ§Ùد Int8Array ÛØ§ Float64Array Ø¨Ø§Ø´Ø¯Ø Ø§ÙÙ
ÛØªÛ ÙØ¯Ø§Ø±Ø¯) با ØªÙØ¬Ù ب٠ÙÙØ¹ آرگÙÙ
ا٠آ٠Ù
ØªÙØ§Ùت Ø±ÙØªØ§Ø± Ù
ÛâÚ©ÙØ¯.
5 ÙÙØ¹ ٠ختÙ٠آرگÙ٠اÙâÙØ§ ÙØ¬Ùد Ø¯Ø§Ø±ÙØ¯:
new TypedArray(buffer, [byteOffset], [length]);
new TypedArray(object);
new TypedArray(typedArray);
new TypedArray(length);
new TypedArray();
-
اگر ÛÚ© آرگÙ٠اÙ
ArrayBufferÙØ¬Ùد Ø¯Ø§Ø´ØªÙ Ø¨Ø§Ø´Ø¯Ø view بر ØØ³Ø¨ آ٠ساخت٠٠ÛâØ´ÙØ¯. ٠ا Ù¾ÛØ´ از اÛ٠از ÙÙ Û٠سÛÙØªÚ©Ø³ Ø§Ø³ØªÙØ§Ø¯Ù کردÛÙ .٠ا Ù ÛâØªÙØ§ÙÛÙ Ø¨Ù ØµÙØ±Øª Ø§Ø®ØªÛØ§Ø±Û
byteOffsetتÙÛÙ Ú©ÙÛ٠ک٠از Ø¢Ù Ø´Ø±ÙØ¹ Ú©ÙÛÙ (Ø¨Ù Ø´Ú©Ù Ù¾ÛØ´âÙØ±Ø¶ از 0 Ø´Ø±ÙØ¹ Ù ÛâÚ©ÙÛÙ ) Ù ÛÚ©lengthک٠تا Ø¢ÙØ¬Ø§ ادا٠٠دÙÛÙ (Ø¨Ù ØµÙØ±Øª Ù¾ÛØ´âÙØ±Ø¶ تا Ø§ÙØªÙØ§Û Ø¨Ø§ÙØ± ادا٠Ùâ Ù ÛâØ¯ÙÛÙ )Ø Ø¯Ø± ÙØªÛØ¬ÙØ view ÙÙØ· Ø¨Ø®Ø´Û Ø§Ø² Ø¨Ø§ÙØ± را Ù¾ÙØ´Ø´ Ù ÛâØ¯ÙØ¯. -
اگر ÛÚ© آراÛÙ ÛØ§ ÙØ± Ø´Û Ù Ø§ÙÙØ¯ آ٠داشت٠باشÛÙ Ø Ø¢Ù Ø´Û ÛÚ© آراÛÙâÛ typed ب٠Ù٠ا٠طÙÙ Ù ÛâØ³Ø§Ø²Ø¯ Ù Ù ØØªÙا را ÙÛØ² Ú©Ù¾Û Ù ÛâÚ©ÙØ¯.
٠ا Ù ÛâØªÙØ§ÙÛ٠از Ø¢Ù Ø¨Ø±Ø§Û Ù ÙØ¯Ø§Ø±Ø¯ÙÛ Ø§ÙÙÛÙâÛ Ø¢Ø±Ø§Û٠با Ø¯Ø§Ø¯Ù Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ :
let arr = new Uint8Array([0, 1, 2, 3]); alert( arr.length ); // 4, ÛÚ© آراÛÙ Ø¯ÙØ¯ÙÛÛ Ø¨Ù Ù٠ا٠طÙÙ Ù ÛâØ³Ø§Ø²Ø¯ alert( arr[1] ); // 1, با 4 Ø¨Ø§ÛØª(اعداد صØÛØ Ø¨Ø¯ÙÙâØ¹ÙØ§Ù ت 8-Ø¨ÛØªÛ) با Ù ÙØ§Ø¯Ûر داد٠شد٠پر Ù ÛâØ´ÙØ¯ -
اگر ÛÚ©
TypedArrayدÛگر ÙØ¬Ùد Ø¯Ø§Ø´ØªÙ Ø¨Ø§Ø´Ø¯Ø Ø¨Ù ÙÙ Ø§Ù Ø´Ú©Ù Ø±ÙØªØ§Ø± Ù ÛâÚ©ÙØ¯: Ú© آراÛÙâÛ typed ب٠Ù٠ا٠طÙÙ Ù ÛâØ³Ø§Ø²Ø¯ Ù Ù ØØªÙا را ÙÛØ² Ú©Ù¾Û Ù ÛâÚ©ÙØ¯. در Ø·Ù٠اÛÙ ÙØ±Ø¢ÛÙØ¯Ø Ù ÙØ§Ø¯Ûر در ØµÙØ±Øª ÙÛØ§Ø² ب٠ÙÙØ¹ Ø¬Ø¯ÛØ¯Û تبدÛÙ Ù ÛâØ´ÙÙØ¯.let arr16 = new Uint16Array([1, 1000]); let arr8 = new Uint8Array(arr16); alert( arr8[0] ); // 1 alert( arr8[1] ); // 232, ØªÙØ§Ø´ Ù ÛâÚ©ÙØ¯ 1000 را Ú©Ù¾Û Ú©ÙØ¯ ا٠ا ÙÙ ÛâØªÙØ§Ùد 1000 را در 8 Ø¨ÛØª جا Ø¯ÙØ¯(ØªÙØ¶Ûخات در پاÛÛÙ) -
Ø¨Ø±Ø§Û Ø¢Ø±Ú¯Ù٠ا٠عددÛ
lengthâ ÛÚ© آراÛÙâ typed ک٠ب٠Ù٠ا٠تعداد عض٠دارد Ù ÛâØ³Ø§Ø²Ø¯. Ø·ÙÙ Ø¨Ø§ÛØª آ٠برابرlengthضرب در تعداد Ø¨Ø§ÛØªâÙØ§Û ÛÚ© Ø¢ÛØªÙ ÙØ§ØØ¯TypedArray.BYTES_PER_ELEMENTØ®ÙØ§Ùد Ø¨ÙØ¯:let arr = new Uint16Array(4); // Ø¨Ø±Ø§Û 4 عدد صØÛØ Ù ÛâØ³Ø§Ø²Ø¯ typed ÛÚ© آراÛÙâÛ alert( Uint16Array.BYTES_PER_ELEMENT ); // Ø¨Ù Ø§Ø²Ø§Û ÙØ± عدد صØÛØ 2 Ø¨Ø§ÛØª alert( arr.byteLength ); // 8 (Ø§ÙØ¯Ø§Ø²Ù در Ø¨Ø§ÛØªâÙØ§) -
بدÙ٠آرگÙ٠اÙâÙØ§ ÛÚ© آراÛÙâÛ typed با Ø·ÙÙ ØµÙØ± Ù ÛâØ³Ø§Ø²Ø¯.
Ù
ا Ù
ÛâØªÙØ§ÙÛÙ
Ù
ستÙÛÙ
ا ÛÚ© TypedArray بسازÛÙ
Ø Ø¨Ø¯Ù٠اÛÙک٠ب٠ArrayBuffer اشارÙâØ§Û Ú©ÙÛÙ
. ÙÙÛ ÛÚ© view بدÙÙ ArrayBuffer Ø¯Ø±Ø¨Ø±Ú¯ÛØ±Ùد٠ÙÙ
ÛâØªÙØ§Ùد ÙØ¬Ùد Ø¯Ø´Ø§ØªÙ Ø¨Ø§Ø´Ø¯Ø Ø¯Ø± ÙØªÛج٠در ÙÙ
ÙâÛ Ø§ÛÙ Ù
ÙØ§Ø±Ø¯ بجز Ù
ÙØ±Ø¯ اÙÙ(ÙÙگاÙ
Û Ú©Ù ÙØ±Ø§ÙÙ
شد٠است) Ø¨Ù Ø·ÙØ± Ø®ÙØ¯Ú©Ø§Ø± ساخت٠Ù
Û@Ø´ÙØ¯.
Ø¨Ø±Ø§Û Ø¯Ø³ØªØ±Ø³Û Ø¨Ù ArrayBuffer Ø¯Ø±Ø¨Ø±Ú¯ÛØ±ÙØ¯ÙØ ÙÛÚÚ¯ÛâÙØ§Û Ø²ÛØ± در TypedArray ÙØ¬Ùد دارد:
bufferâArrayBufferارجاع بÙbyteLengthâArrayBufferØ·ÙÙ
Ø¨ÙØ§Ø¨Ø±Ø§ÛÙØ ٠ا ÙÙ ÛØ´Ù Ù ÛâØªÙØ§ÙÛ٠از ÛÚ© view ب٠دÛÚ¯Ø±Û Ø¨Ø±ÙÛÙ :
let arr8 = new Uint8Array([0, 1, 2, 3]);
// دÛگر در ÙÙ
ا٠داد٠view ÛÚ©
let arr16 = new Uint16Array(arr8.buffer);
در ادا٠٠ÙÛØ³Øª آراÛÙâÙØ§Û typed آ٠د٠است:
Uint8Array,Uint16Array,Uint32Arrayâ Ø¨Ø±Ø§Û اعداد صØÛØ 8 Ù 16 Ù 32 Ø¨ÛØªÛUint8ClampedArrayâ Ù ÛâÚ©ÙØ¯ (در Ø§Ø¯Ø§Ù Ù Ø®ÙØ§ÙÛØ¯ Ø¯ÛØ¯) âclampsâ Ø¨Ø±Ø§Û اعداد صØÛØ 8 Ø¨ÛØªÛØ Ø¢ÙâÙØ§ را
Int8Array,Int16Array,Int32Arrayâ Ø¨Ø±Ø§Û اعداد صØÛØ Ø¹ÙØ§Ù ØªâØ¯Ø§Ø±(Ù ÛâØªÙØ§ÙÙØ¯ Ù ÙÙÛ Ø¨Ø§Ø´ÙØ¯)Float32Array,Float64Arrayâ Ø¨Ø±Ø§Û اعداد Ø§Ø¹Ø´Ø§Ø±Û Ø¹ÙØ§Ù ØªâØ¯Ø§Ø± 32 Ù 64 Ø¨ÛØªÛ
int8 -ÛØ§ اÙÙØ§Ø¹ Ù
شابÙ- تک Ù
ÙØ¯Ø§Ø±Û ÙØ¬Ùد ÙØ¯Ø§Ø±Ø¯.ÙØ·Ùا ب٠خاطر Ø¯Ø§Ø´ØªÙ Ø¨Ø§Ø´ÛØ¯Ø عÙÛâØ±ØºÙ
ÙØ§Ù
âÙØ§ÛÛ Ù
اÙÙØ¯ Int8ArrayØ ÙÛÚ ÙÙØ¹Û با Ù
ÙØ¯Ø§Ø± ÙØ§ØØ¯ Ù
اÙÙØ¯ int ÛØ§ int8 در Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت ÙØ¬Ùد ÙØ¯Ø§Ø±Ø¯.
اÛÙ Ù
ÙØ¶Ùع Ù
ÙØ·ÙÛ Ø§Ø³ØªØ Ø²ÛØ±Ø§ Int8Array ÛÚ© آراÛ٠از اÛÙ Ù
ÙØ§Ø¯Ûر Ù
جزا ÙÛØ³ØªØ بÙÚ©Ù ÛÚ© view رÙÛ ArrayBuffer است.
Ø±ÙØªØ§Ø± خارج از Ù ØØ¯ÙدÙ
بÙÙÛØ³ÛÙ ÚÙØ ÙÛÚ Ø®Ø·Ø§ÛÛ ÙØ¬Ùد ÙØ®ÙØ§ÙØ¯ Ø¯Ø§Ø´ØªØ Ø§Ù Ø§ Ø¨ÛØªâÙÙØ§Û اضاÙÛ ØØ°Ù Ø®ÙØ§ÙÙØ¯ شد typed اگر Ø¨Ø®ÙØ§ÙÛÙ ÛÚ© Ù ÙØ¯Ø§Ø± خارج از Ù ØØ¯Ùد٠را در ÛÚ© آراÛÙâÛ
Ø¨Ù Ø§Ø²Ø§Û ÙØ± Ù
ÙØ¯Ø§Ø± 8 Ø¨ÛØª Ø¯Ø§Ø±Ø¯Ø Ù¾Ø³ بازÙâÛ Ø¢Ù Ø¨ÛÙ 0 تا 255 Ø®ÙØ§Ùد Ø¨ÙØ¯ Uint8Array ÙØ±Ø§Ø± دÙÛÙ
. در ØØ§Ùت Ø¯ÙØ¯ÙÛÛØ 256 برابر 100000000(9 Ø¨ÛØª) Ø®ÙØ§Ùد Ø¨ÙØ¯Ø ÙÙÛ Uint8Array ب٠عÙÙØ§Ù Ù
Ø«Ø§ÙØ Ø¨ÛØ§ÛÛØ¯ Ø³Ø¹Û Ú©ÙÛÙ
256 را در
:Ø¨Ø±Ø§Û Ø§Ø¹Ø¯Ø§Ø¯ Ø¨Ø²Ø±Ú¯ØªØ±Ø ÙÙØ· 8 Ø¨ÛØª س٠ت راست(Ø¨ÛØªâÙØ§Û Ú©Ù âØ§Ø±Ø²Ø´âØªØ±) Ø°Ø®ÛØ±Ù Ù ÛâØ´ÙØ¯Ø ٠بÙÛÙ Ø¨ÛØªâÙØ§ ØØ°Ù Ù ÛâØ´ÙÙØ¯
.در ÙØªÛØ¬Ù ØµÙØ± Ø¯Ø±ÛØ§Ùت Ù ÛâÚ©ÙÛÙ
:Ø¨Ø±Ø§Û 257Ø ØØ§Ùت Ø¯ÙØ¯ÙÛÛ 100000001(9 Ø¨ÛØª) Ø®ÙØ§Ùد Ø¨ÙØ¯Ø 8 Ø¨ÛØª سÙ
ت راست Ø°Ø®ÛØ±Ù Ù
ÛâØ´ÙÙØ¯Ø در ÙØªÛج٠در آراÛÙ 1 را دارÛÙ
Ø°Ø®ÛØ±Ù Ù ÛâØ´ÙØ¯ 28 ب٠عبارت دÛÚ¯Ø±Ø Ø¨Ø§ÙÛâÙ Ø§ÙØ¯Ù عدد
:ÛÚ© ÙÙ ÙÙÙ
let uint8array = new Uint8Array(16);
let num = 256;
alert(num.toString(2)); // 100000000 (ÙÙ
Ø§ÛØ´ Ø¯ÙØ¯ÙÛÛ)
uint8array[0] = 256;
uint8array[1] = 257;
alert(uint8array[0]); // 0
alert(uint8array[1]); // 1
از اÛÙ ÙØ¸Ø±Ø Uint8ClampedArray خاص است Ù Ø±ÙØªØ§Ø± Ù
ØªÙØ§ÙØªÛ Ø¯Ø§Ø±Ø¯. اÛÙ Ù
ÙØ±Ø¯ Ø¨Ù Ø§Ø²Ø§Û ÙØ± عدد بزرگتر از 255Ø 255 Ù Ø¨Ù Ø§Ø²Ø§Û ÙØ± عدد Ù
ÙÙÛØ 0 را Ø°Ø®ÛØ±Ù Ù
ÛâÚ©ÙØ¯. اÛÙ Ø±ÙØªØ§Ø± Ø¨Ø¨Ø±Ø§Û Ù¾Ø±Ø¯Ø§Ø²Ø´ تصÙÛØ± Ù
ÙÛØ¯ است.
Ù ØªØ¯ÙØ§Û TypedArray
Ù
ØªØ¯ÙØ§Û TypedArray Ù
اÙÙØ¯ آراÛÙâÙØ§Û Ù
عÙ
ÙÙÛ Ù
ÛâØ¨Ø§Ø´Ø¯ ÙÙÛ Ø§Ø³ØªØ«ÙØ§ÙØ§Û ÙØ§Ø¨Ù ØªÙØ¬ÙÛ ÙÛØ² ÙØ¬Ùد دارد.
Ù
ا Ù
ÛâØªÙØ§ÙÛÙ
mapØ sliceØ findØ reduce Ù ØºÛØ±Ù را Ù¾ÛÙ
Ø§ÛØ´ Ú©ÙÛÙ
.
ÙØ±ÚÙØ¯Ø تعداد Ú©Ù Û Ú©Ø§Ø± ÙØ¬Ùد دارد ک٠٠ا ÙÙ ÛâØªÙØ§ÙÛÙ Ø§ÙØ¬Ø§Ù دÙÛÙ :
- بدÙÙ
spliceâ ٠ا ÙÙ ÛâØªÙØ§ÙÛÙ ÛÚ© Ù ÙØ¯Ø§Ø± را âØØ°Ùâ Ú©ÙÛÙ Ø Ø²ÛØ±Ø§ آراÛÙâÙØ§Û typedØ Ø¯Ø±ÙØ§Ùع viewÙØ§ÛÛ Ø±ÙÛ ÛÚ© Ø¨Ø§ÙØ± ÙØ³ØªÙد Ú©Ù ÙØ§ØÛÙâÙØ§ÛÛ Ø«Ø§Ø¨Øª Ù Ù¾ÛÙØ³ØªÙ رÙÛ ØØ§Ùظ٠٠ÛâØ¨Ø§Ø´ÙØ¯. تÙÙØ§ Ú©Ø§Ø±Û Ú©Ù Ù Ø§ Ù ÛâØªÙØ§ÙÛÙ Ø§ÙØ¬Ø§Ù دÙÛÙ ØªØ®ØµÛØµ ÛÚ© ØµÙØ± است. - بدÙÙ Ù
تد
concat
د٠٠تد اضاÙÛ ÙÛØ² ÙØ¬Ùد دارد:
- Ù
تد
arr.set(fromArr, [offset])ت٠ا٠اعضاÛfromArrرا درarrÚ©Ù¾Û Ù ÛâÚ©ÙØ¯Ø ک٠اÛÙ Ú©Ù¾Û Ú©Ø±Ø¯Ù Ø§Ø² Ù ØÙoffsetØ´Ø±ÙØ¹ Ù ÛâØ´ÙØ¯.(ØØ§Ùت Ù¾ÛØ´âÙØ±Ø¶ Ø¢Ù 0 است.) - Ù
تد
arr.subarray([begin, end])ÛÚ© view Ø¬Ø¯ÛØ¯ از Ù٠ا٠ÙÙØ¹ را ازbeginتاendÙ ÛâØ³Ø§Ø²Ø¯(Ø§ÙØØµØ§Ø±Û). اÛ٠٠تد ٠اÙÙØ¯ ٠تدsliceاست(آ٠٠تد ÙÛØ² Ù¾Ø´ØªÛØ¨Ø§ÙÛ Ù ÛâØ´ÙØ¯.) ÙÙÛ ÚÛØ²Û را Ú©Ù¾Û ÙÙ ÛâÚ©ÙØ¯ â ÙÙØ· ÛÚ© view Ø¬Ø¯ÛØ¯ Ù ÛâØ³Ø§Ø²Ø¯ ک٠رÙÛ Ø¯Ø§Ø¯ÙâÙØ§Û Ø¯Ø§Ø¯Ù Ø´Ø¯ÙØ ع٠٠ÙÛØ§Øª Ø§ÙØ¬Ø§Ù Ø¯ÙØ¯.
اÛÙ Ù ØªØ¯ÙØ§ ب٠٠ا اجاز٠٠ÛâØ¯ÙØ¯ ک٠آراÛÙâÙØ§Û typed را Ú©Ù¾Û Ú©ÙÛÙ Ø Ø¢ÙâÙØ§ را با ÙÙ ØªØ±Ú©ÛØ¨ Ú©ÙÛÙ Ø Ø¢Ø±Ø§ÛÙâÙØ§Û Ø¬Ø¯ÛØ¯ از آراÛÙâÙØ§Û Ù ÙØ¬Ùد بسازÛÙ Ø Ù Ø¨Ù ÙÙ ÛÙ ØªØ±ØªÛØ¨.
DataView
ÛÚ© DataView ÛÚ© view خاص ÙÙÙâØ§ÙØ¹Ø§Ø¯Ù Ø§ÙØ¹Ø·Ø§ÙâÙ¾Ø°ÛØ± âuntypedâ Ø±ÙÛ ArrayBuffer است. DataView اجاز٠Ù
ÛâÙØ¯ ک٠در ÙØ± offset ٠در ÙØ± ÙØ±Ù
ØªÛ Ø¨Ù Ø¯Ø§Ø¯ÙâÙØ§ Ø¯Ø³ØªØ±Ø³Û Ø¯Ø§Ø´ØªÙ Ø¨Ø§Ø´ÛÙ
.
-
Ø¨Ø±Ø§Û Ø¢Ø±Ø§ÛÙâÙØ§Û typedØ Ø³Ø§Ø²ÙØ¯Ù ÙØ±Ù ت را ٠شخص Ù ÛâÚ©ÙØ¯. ک٠آراÛÙ ÙØ±Ø§Ø± است ÛÚ©ÙÙØ§Ø®Øª باشد. عدد iا٠Ø
arr[i]است. -
با
DataViewØ Ù Ø§ با Ù ØªØ¯ÙØ§ÛÛ Ù Ø§ÙÙØ¯.getUint8(i)ÛØ§.getUint16(i)Ø¨Ù Ø¯Ø§Ø¯Ù Ø¯Ø³ØªØ±Ø³Û Ù¾ÛØ¯Ø§ Ù ÛâÚ©ÙÛÙ . ٠ا ÙØ±Ù ت را Ø¨Ø¬Ø§Û ÙÙÚ¯Ø§Ù Ø³Ø§Ø®ØªØ ÙÙÚ¯Ø§Ù ÙØ±Ø§Ø®ÙاÙÛ Ù ØªØ¯ Ø§ÙØªØ®Ø§Ø¨ Ù ÛâÚ©ÙÛÙ .
سÛÙØªÚ©Ø³:
new DataView(buffer, [byteOffset], [byteLength])
bufferâ Ø¨Ø§Ùر Ù Ø®ØµÙØµ Ø®ÙØ¯Ø´ را ÙÙ ÛâØ³Ø§Ø²Ø¯. ٠ا Ø¨Ø§ÛØ¯ آ٠را آ٠اد٠داشت٠باشÛÙ typed Ø¨Ø±Ø®ÙØ§Ù آراÛÙâÙØ§ÛDataView.Ø¯Ø±Ø¨Ø±Ú¯ÛØ±ÙدÙArrayBufferbyteOffsetâ (ØØ§Ùت Ù¾ÛØ´âÙØ±Ø¶ 0 Ù ÛâØ¨Ø§Ø´Ø¯)view Ù ØÙ Ø¨Ø§ÛØª Ø´Ø±ÙØ¹âÚ©ÙÙØ¯ÙâÛbyteLengthâ (ØØ§Ùت Ù¾ÛØ´âÙØ±Ø¶ تا Ø§ÙØªÙØ§Û Ø¨Ø§ÙØ± Ù ÛâØ¨Ø§Ø´Ø¯)view Ø·ÙÙ Ø¨Ø§ÛØªâÙØ§Û
Ø¨Ø±Ø§Û ÙÙ ÙÙÙØ در اÛÙØ¬Ø§ ٠ا اعداد ÛÚ© Ø¨Ø§ÙØ± Ûکسا٠را در ÙØ±Ù تâÙØ§Û ٠ختÙ٠استخراج کردÙâØ§ÛÙ :
let buffer = new Uint8Array([255, 255, 255, 255]).buffer; // آراÛÙâÙØ§Û Ø¯ÙØ¯ÙÛÛ 4 Ø¨Ø§ÛØªÛØ Ú©Ù ØØ¯Ø§Ú©Ø«Ø± Ù
ÙØ¯Ø§Ø± ÙÙ
ÙâÛ Ø¢ÙâÙØ§ 255 است
let dataView = new DataView(buffer);
// ØµÙØ± offset Ø¯Ø±ÛØ§Ùت ÛÚ© عدد 8 Ø¨ÛØªÛ در
alert( dataView.getUint8(0) ); // 255
// ØµÙØ±Ø اÛ٠عدد از Ø¯Ù Ø¨Ø§ÛØª تشکÛ٠شد٠است ک٠با ÙÙ
65535 را ÙØ´Ø§Ù Ù
ÛâØ¯ÙÙØ¯ offset ØØ§Ùا Ø¯Ø±ÛØ§Ùت ÛÚ© عدد 16 Ø¨ÛØªÛ در
alert( dataView.getUint16(0) ); // 65535 (بزرگترÛ٠عدد صØÛØ Ø¨Ø¯ÙÙâØ¹ÙØ§Ù
ت 16 Ø¨ÛØªÛ)
// ØµÙØ± offset Ø¯Ø±ÛØ§Ùت ÛÚ© عدد 32 Ø¨ÛØªÛ در
alert( dataView.getUint32(0) ); // 4294967295 (بزرگترÛ٠عدد صØÛØ Ø¨Ø¯ÙÙâØ¹ÙØ§Ù
ت 32 Ø¨ÛØªÛ)
dataView.setUint32(0, 0); // ØµÙØ± ÙØ±Ø§Ø± داد٠ÛÚ© عدد 4 Ø¨Ø§ÛØªÛØ Ø¯Ø± ÙØªÛج٠ÙÙ
Ù Ø¨Ø§ÛØªâÙØ§ را ØµÙØ± Ù
ÛâÚ©ÙÛÙ
ÙÙگاÙ
Û Ú©Ù Ù
ÛâØ®ÙØ§ÙÛÙ
دادÙâÙØ§ÛÛ Ø¨Ø§ ÙØ±Ù
تâÙØ§Û درÙÙ
٠برÙÙ
را در ÛÚ© Ø¨Ø§ÙØ± Ø°Ø®ÛØ±Ù Ú©ÙÛÙ
Ø DataView عاÙÛ Ø§Ø³Øª. ب٠عÙÙØ§Ù Ù
Ø«Ø§ÙØ ÙÙگاÙ
Û Ú©Ù Ø¯ÙØ¨Ø§ÙÙâØ§Û Ø§Ø² Ø¬ÙØªâÙØ§Û(عدد صØÛØ 16 Ø¨ÛØªÛØ Ø¹Ø¯Ø¯ Ø§Ø¹Ø´Ø§Ø±Û 32 Ø¨ÛØªÛ) را Ø°Ø®ÛØ±Ù Ù
ÛâÚ©ÙÛÙ
Ø DataView ب٠آساÙÛ Ø§Ø¬Ø§Ø²Ù Ø¯Ø³ØªØ±Ø³Û Ø¨Ù Ø¢ÙâÙØ§ را Ù
ÛâØ¯ÙØ¯.
Ø®ÙØ§ØµÙ
ÛÚ© ArrayBufferØ Ø´Û Ø§ØµÙÛ Ø§Ø³ØªØ ÛÚ© ارجاع ب٠ÛÚ© ÙØ§ØÛÙ Ù¾ÛÙØ³ØªÙ از ØØ§Ùظ٠با Ø·Ù٠ثابت.
Ø¨Ø±Ø§Û Ø§ÙØ¬Ø§Ù
ØªÙØ±Ûبا ÙØ± عÙ
ÙÛØ§ØªÛ رÙÛ ArrayBufferØ Ù
ا ب٠ÛÚ© view ÙÛØ§Ø² دارÛÙ
.
- اÛÙ Ù
ÛâØªÙØ§Ùد ÛÚ©
TypedArrayباشد:Uint8Array,Uint16Array,Uint32Arrayâ Ø¨Ø±Ø§Û اعداد صØÛØ Ø¨Ø¯Ù٠عÙÙØ§Ù ت 8 Ù 16 Ù 32 Ø¨ÛØªÛUint8ClampedArrayâ Ù ÛâÚ©ÙØ¯ âclampsâ Ø¨Ø±Ø§Û اعداد صØÛØ 8 Ø¨ÛØªÛØ Ø¢ÙâÙØ§ راInt8Array,Int16Array,Int32Arrayâ Ø¨Ø±Ø§Û اعداد صØÛØ Ø¹ÙØ§Ù ØªâØ¯Ø§Ø±(Ù ÛâØªÙØ§ÙÙØ¯ Ù ÙÙÛ Ø¨Ø§Ø´ÙØ¯)Float32Array,Float64Arrayâ Ø¨Ø±Ø§Û اعداد Ø§Ø¹Ø´Ø§Ø±Û Ø¹ÙØ§Ù ØªâØ¯Ø§Ø± 32 Ù 64 Ø¨ÛØªÛ
- ÛØ§ ÛÚ©
DataViewâ Ù٠ا٠viewÛÛ Ú©Ù Ø§Ø² Ù ØªØ¯ÙØ§ Ø¨Ø±Ø§Û Ù Ø´Ø®Øµ کرد٠ÛÚ© ÙØ±Ù ت Ø§Ø³ØªÙØ§Ø¯Ù Ù ÛâÚ©ÙØ¯Ø ٠اÙÙØ¯getUint8(offset)
در Ø¨ÛØ´ØªØ± Ù
ÙØ§Ø±Ø¯Ø Ù
ا Ù
ستÙÛÙ
ا آراÛÙâÙØ§Û typed را Ù
ÛâØ³Ø§Ø²ÛÙ
٠اجرا Ù
ÛâÚ©ÙÛÙ
Ø ArrayBuffer را ب٠عÙÙØ§Ù ÛÚ© âÙ
خرج Ù
Ø´ØªØ±Ú©â ØªØ®Øª Ù¾ÙØ´Ø´ ÙØ±Ø§Ø± Ù
ÛâØ¯ÙÛÙ
. Ù
ÛâØªÙØ§ÙÛÙ
با buffer. Ø¨Ù Ø¢Ù Ø¯Ø³ØªØ±Ø³Û Ù¾ÛØ¯Ø§ Ú©ÙÛÙ
٠در ØµÙØ±Øª ÙÛØ§Ø² ÛÚ© view دÛگر Ø§ÛØ¬Ø§Ø¯ Ú©ÙÛÙ
.
Ø¯Ù Ø§ØµØ·ÙØ§Ø اضاÙÛ ÙÛØ² ÙØ¬Ùد Ø¯Ø§Ø±Ø¯Ø Ú©Ù Ø¨Ø±Ø§Û ØªÙØµÛÙ Ù ØªØ¯ÙØ§ÛÛ Ú©Ù Ø±ÙÛ Ø¯Ø§Ø¯ÙâÙØ§Û Ø¯ÙØ¯ÙÛÛ Ø¹Ù ÙÛØ§Øª Ø§ÙØ¬Ø§Ù Ù ÛâØ¯ÙÙØ¯ Ø§Ø³ØªÙØ§Ø¯Ù Ù ÛâØ´ÙÙØ¯:
- Ø§ØµØ·ÙØ§Ø
ArrayBufferViewØ Ø§Ø² ÙÙØ¹Û Ø§ØµØ·ÙØ§Ø است Ú©Ù Ø¨Ø±Ø§Û Ù¾ÙØ´Ø´ دستÙâÛ Ú¯Ø³ØªØ±Ø¯ÙâØ§Û Ø§Ø² ÚÛØ²Ùا Ø§Ø³ØªÙØ§Ø¯Ù Ù ÛâØ´ÙØ¯Ø ک٠در اÛÙ Ù ÙØ±Ø¯Ø Ø¨Ø±Ø§Û ØªÙ Ø§Ù Ø§ÙÙØ§Ø¹ viewÙØ§ Ø§Ø³ØªÙØ§Ø¯Ù Ù ÛâØ´ÙØ¯. - Ø§ØµØ·ÙØ§Ø
BufferSourceØ Ø§Ø² ÙÙØ¹Û Ø§ØµØ·ÙØ§Ø است Ú©Ù Ø¨Ø±Ø§Û Ù¾ÙØ´Ø´ دستÙâÛ Ú¯Ø³ØªØ±Ø¯ÙâØ§Û Ø§Ø² ÚÛØ²Ùا Ø§Ø³ØªÙØ§Ø¯Ù Ù ÛâØ´ÙØ¯Ø ک٠در اÛÙ Ù ÙØ±Ø¯Ø براÛArrayBufferÛØ§ArrayBufferViewØ§Ø³ØªÙØ§Ø¯Ù Ù ÛâØ´ÙØ¯.
اÛÙ Ø§ØµØ·ÙØ§ØØ§Øª را در بخش بعد Ù
Ø´Ø§ÙØ¯Ù Ø®ÙØ§ÙÛÙ
کرد. BufferSource ÛÚ©Û Ø§Ø² Ø±Ø§ÛØ¬âترÛÙ Ø§ØµØ·ÙØ§ØØ§Øª Ù
ÛâØ¨Ø§Ø´Ø¯Ø Ú©Ù Ù
عÙÛ Ø¢Ù âÙØ± ÙÙØ¹ از Ø¯Ø§Ø¯Ù Ø¯ÙØ¯ÙÛÛâ Ø§Ø³Øª â ÛÚ© ArrayBuffer ÛØ§ ÛÚ© view رÙÛ Ø¢Ù.
در اÛÙØ¬Ø§ ÛÚ© ÚÛØªâØ´ÛØª(برگ٠تÙÙØ¨) دارÛÙ :
ÙØ¸Ø±Ø§Øª
<code>Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯Ø Ø¨Ø±Ø§Û ÚÙØ¯Û٠خط â کد را درÙ٠تگ<pre>ÙØ±Ø§Ø± دÙÛØ¯Ø Ø¨Ø±Ø§Û Ø¨ÛØ´ از د٠خط کد â Ø§Ø² ÛÚ© جعبÙÙ Ø´ÙÛ Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯. (plnkrØ jsbinØ codepenâ¦)