%TypedArray.prototype% metotları normalde türetilmiş bir nesne oluşturmak için this değerinin yapıcısını (constructor) kullanır. Ancak, bir alt sınıf yapıcısı (constructor) , %Symbol.species% özelliğini yeniden tanımlayarak bu varsayılan davranışı geçersiz kılabilir.
# 23.2.3 Properties of the %TypedArray% Prototype Object
%TypedArray% prototip nesnesi:
# 23.2.3.1 %TypedArray%.prototype.at ( index )
obj , this değeri olsun.
taRecord , ? ValidateTypedArray (obj , seq-cst) olsun.
length , TypedArrayLength (taRecord ) olsun.
relativeIndex , ? ToIntegerOrInfinity (index ) olsun.
Eğer relativeIndex ≥ 0 ise, o zaman
k , relativeIndex olsun.
Aksi takdirde,
k , length + relativeIndex olsun.
Eğer k < 0 veya k ≥ length ise, undefined döndür.
! Get (obj , ! ToString (𝔽 (k ))) döndür.
# 23.2.3.2 get %TypedArray%.prototype.buffer
%TypedArray% .prototype.buffer set erişici fonksiyonu undefined olan bir erişim özelliğidir (accessor property) . Get erişici fonksiyonu çağrıldığında aşağıdaki adımları gerçekleştirir:
obj , this değeri olsun.
? RequireInternalSlot (obj , [[TypedArrayName]] ) işlemini gerçekleştir.
Assert : obj nesnesinin bir [[ViewedArrayBuffer]] dahili yuvası vardır.
buffer , obj .[[ViewedArrayBuffer]] olsun.
buffer döndür.
# 23.2.3.3 get %TypedArray%.prototype.byteLength
%TypedArray% .prototype.byteLength set erişici fonksiyonu undefined olan bir erişim özelliğidir (accessor property) . Get erişici fonksiyonu çağrıldığında aşağıdaki adımları gerçekleştirir:
obj , this değeri olsun.
? RequireInternalSlot (obj , [[TypedArrayName]] ) işlemini gerçekleştir.
Assert : obj nesnesinin bir [[ViewedArrayBuffer]] dahili yuvası vardır.
taRecord , MakeTypedArrayWithBufferWitnessRecord (obj , seq-cst) olsun.
Eğer IsTypedArrayOutOfBounds (taRecord ) true ise, +0𝔽 döndür.
size , TypedArrayByteLength (taRecord ) olsun.
𝔽 (size ) döndür.
# 23.2.3.4 get %TypedArray%.prototype.byteOffset
%TypedArray% .prototype.byteOffset set erişici fonksiyonu undefined olan bir erişim özelliğidir (accessor property) . Get erişici fonksiyonu çağrıldığında aşağıdaki adımları gerçekleştirir:
obj , this değeri olsun.
? RequireInternalSlot (obj , [[TypedArrayName]] ) işlemini gerçekleştir.
Assert : obj nesnesinin bir [[ViewedArrayBuffer]] dahili yuvası vardır.
taRecord , MakeTypedArrayWithBufferWitnessRecord (obj , seq-cst) olsun.
Eğer IsTypedArrayOutOfBounds (taRecord ) true ise, +0𝔽 döndür.
offset , obj .[[ByteOffset]] olsun.
𝔽 (offset ) döndür.
# 23.2.3.5 %TypedArray%.prototype.constructor
%TypedArray% .prototype.constructor özelliğinin ilk değeri %TypedArray% nesnesidir.
# 23.2.3.6 %TypedArray%.prototype.copyWithin ( target , start [ , end ] )
Bu metodun argümanlarının yorumlanması ve kullanımı, 23.1.3.4 içinde tanımlanan Array.prototype.copyWithin ile aynıdır.
Bu metot çağrıldığında aşağıdaki adımları gerçekleştirir:
obj , this değeri olsun.
taRecord , ? ValidateTypedArray (obj , seq-cst) olsun.
length , TypedArrayLength (taRecord ) olsun.
relativeTarget , ? ToIntegerOrInfinity (target ) olsun.
Eğer relativeTarget = -∞ ise, targetIndex , 0 olsun.
Aksi takdirde, eğer relativeTarget < 0 ise, targetIndex , max (length + relativeTarget , 0) olsun.
Aksi takdirde, targetIndex , min (relativeTarget , length ) olsun.
relativeStart , ? ToIntegerOrInfinity (start ) olsun.
Eğer relativeStart = -∞ ise, startIndex , 0 olsun.
Aksi takdirde, eğer relativeStart < 0 ise, startIndex , max (length + relativeStart , 0) olsun.
Aksi takdirde, startIndex , min (relativeStart , length ) olsun.
Eğer end undefined ise, relativeEnd , length olsun; aksi takdirde relativeEnd , ? ToIntegerOrInfinity (end ) olsun.
Eğer relativeEnd = -∞ ise, endIndex , 0 olsun.
Aksi takdirde, eğer relativeEnd < 0 ise, endIndex , max (length + relativeEnd , 0) olsun.
Aksi takdirde, endIndex , min (relativeEnd , length ) olsun.
count , min (endIndex - startIndex , length - targetIndex ) olsun.
Eğer count > 0 ise, o zaman
NOTE : Kopyalama, kaynak verilerin bit düzeyinde kopyalamasını koruyacak şekilde gerçekleştirilmelidir.
buffer , obj .[[ViewedArrayBuffer]] olsun.
Set taRecord to MakeTypedArrayWithBufferWitnessRecord (obj , seq-cst).
Eğer IsTypedArrayOutOfBounds (taRecord ) true ise, bir TypeError istisnası fırlat.
length değerini TypedArrayLength (taRecord ) olarak ayarla.
NOTE : Yukarıdaki adımların yan etkileri obj nesnesinin boyutunu azaltmış olabilir, bu durumda kopyalama hala geçerli olan en uzun önek ile devam etmelidir.
count değerini min (count , length - startIndex , length - targetIndex ) olarak ayarla.
elementSize , TypedArrayElementSize (obj ) olsun.
byteOffset , obj .[[ByteOffset]] olsun.
toByteIndex , (targetIndex × elementSize ) + byteOffset olsun.
fromByteIndex , (startIndex × elementSize ) + byteOffset olsun.
countBytes , count × elementSize olsun.
Eğer fromByteIndex < toByteIndex ve toByteIndex < fromByteIndex + countBytes ise, o zaman
direction , -1 olsun.
fromByteIndex değerini fromByteIndex + countBytes - 1 olarak ayarla.
toByteIndex değerini toByteIndex + countBytes - 1 olarak ayarla.
Aksi takdirde,
direction , 1 olsun.
countBytes > 0 olduğu sürece tekrarla,
value , GetValueFromBuffer (buffer , fromByteIndex , uint8, true, unordered) olsun.
SetValueInBuffer (buffer , toByteIndex , uint8, value , true, unordered) işlemini gerçekleştir.
fromByteIndex değerini fromByteIndex + direction olarak ayarla.
toByteIndex değerini toByteIndex + direction olarak ayarla.
countBytes değerini countBytes - 1 olarak ayarla.
obj döndür.
# 23.2.3.7 %TypedArray%.prototype.entries ( )
Bu metot çağrıldığında aşağıdaki adımları gerçekleştirir:
obj , this değeri olsun.
? ValidateTypedArray (obj , seq-cst) işlemini gerçekleştir.
CreateArrayIterator (obj , key+value) döndür.
# 23.2.3.8 %TypedArray%.prototype.every ( callback [ , thisArg ] )
Bu metodun argümanlarının yorumlanması ve kullanımı, 23.1.3.6 içinde tanımlanan Array.prototype.every ile aynıdır.
Bu metot çağrıldığında aşağıdaki adımları gerçekleştirir:
obj , this değeri olsun.
taRecord , ? ValidateTypedArray (obj , seq-cst) olsun.
length , TypedArrayLength (taRecord ) olsun.
Eğer IsCallable (callback ) false ise, bir TypeError istisnası fırlat.
k , 0 olsun.
k < length olduğu sürece tekrarla,
propertyKey , ! ToString (𝔽 (k )) olsun.
kValue , ! Get (obj , propertyKey ) olsun.
testResult , ToBoolean (? Call (callback , thisArg , « kValue , 𝔽 (k ), obj »)) olsun.
Eğer testResult false ise, false döndür.
k değerini k + 1 olarak ayarla.
true döndür.
Bu metot genel (generic) değildir. this değeri, [[TypedArrayName]] dahili yuvasına sahip bir nesne olmalıdır.
# 23.2.3.9 %TypedArray%.prototype.fill ( value [ , start [ , end ] ] )
Bu metodun argümanlarının yorumlanması ve kullanımı, 23.1.3.7 içinde tanımlanan Array.prototype.fill ile aynıdır.
Bu metot çağrıldığında aşağıdaki adımları gerçekleştirir:
obj , this değeri olsun.
taRecord , ? ValidateTypedArray (obj , seq-cst) olsun.
length , TypedArrayLength (taRecord ) olsun.
Eğer obj .[[ContentType]] bigint ise, value değerini ? ToBigInt (value ) olarak ayarla.
Aksi takdirde, value değerini ? ToNumber (value ) olarak ayarla.
relativeStart , ? ToIntegerOrInfinity (start ) olsun.
Eğer relativeStart = -∞ ise, startIndex , 0 olsun.
Aksi takdirde, eğer relativeStart < 0 ise, startIndex , max (length + relativeStart , 0) olsun.
Aksi takdirde, startIndex , min (relativeStart , length ) olsun.
Eğer end undefined ise, relativeEnd , length olsun; aksi takdirde relativeEnd , ? ToIntegerOrInfinity (end ) olsun.
Eğer relativeEnd = -∞ ise, endIndex , 0 olsun.
Aksi takdirde, eğer relativeEnd < 0 ise, endIndex , max (length + relativeEnd , 0) olsun.
Aksi takdirde, endIndex , min (relativeEnd , length ) olsun.
Set taRecord to MakeTypedArrayWithBufferWitnessRecord (obj , seq-cst).
Eğer IsTypedArrayOutOfBounds (taRecord ) true ise, bir TypeError istisnası fırlat.
length değerini TypedArrayLength (taRecord ) olarak ayarla.
endIndex değerini min (endIndex , length ) olarak ayarla.
k , startIndex olsun.
k < endIndex olduğu sürece tekrarla,
propertyKey , ! ToString (𝔽 (k )) olsun.
! Set (obj , propertyKey , value , true) işlemini gerçekleştir.
k değerini k + 1 olarak ayarla.
obj döndür.
# 23.2.3.10 %TypedArray%.prototype.filter ( callback [ , thisArg ] )
Bu metodun argümanlarının yorumlanması ve kullanımı, 23.1.3.8 içinde tanımlanan Array.prototype.filter ile aynıdır.
Bu metot çağrıldığında aşağıdaki adımları gerçekleştirir:
obj , this değeri olsun.
taRecord , ? ValidateTypedArray (obj , seq-cst) olsun.
length , TypedArrayLength (taRecord ) olsun.
Eğer IsCallable (callback ) false ise, bir TypeError istisnası fırlat.
kept , yeni boş bir Liste (List) olsun.
captured , 0 olsun.
k , 0 olsun.
k < length olduğu sürece tekrarla,
propertyKey , ! ToString (𝔽 (k )) olsun.
kValue , ! Get (obj , propertyKey ) olsun.
selected , ToBoolean (? Call (callback , thisArg , « kValue , 𝔽 (k ), obj »)) olsun.
Eğer selected true ise, o zaman
kValue değerini kept listesinin sonuna ekle.
captured değerini captured + 1 olarak ayarla.
k değerini k + 1 olarak ayarla.
result , ? TypedArraySpeciesCreate (obj , « 𝔽 (captured ) ») olsun.
n , 0 olsun.
kept listesindeki her bir element öğesi için şunları yap:
! Set (result , ! ToString (𝔽 (n )), element , true) işlemini gerçekleştir.
n değerini n + 1 olarak ayarla.
result döndür.
Bu metot genel (generic) değildir. this değeri, [[TypedArrayName]] dahili yuvasına sahip bir nesne olmalıdır.
# 23.2.3.11 %TypedArray%.prototype.find ( predicate [ , thisArg ] )
Bu metodun argümanlarının yorumlanması ve kullanımı, 23.1.3.9 içinde tanımlanan Array.prototype.find ile aynıdır.
Bu metot çağrıldığında aşağıdaki adımları gerçekleştirir:
obj , this değeri olsun.
taRecord , ? ValidateTypedArray (obj , seq-cst) olsun.
length , TypedArrayLength (taRecord ) olsun.
findRecord , ? FindViaPredicate (obj , length , ascending, predicate , thisArg ) olsun.
findRecord .[[Value]] döndür.
Bu metot genel (generic) değildir. this değeri, [[TypedArrayName]] dahili yuvasına sahip bir nesne olmalıdır.
# 23.2.3.12 %TypedArray%.prototype.findIndex ( predicate [ , thisArg ] )
Bu metodun argümanlarının yorumlanması ve kullanımı, 23.1.3.10 içinde tanımlanan Array.prototype.findIndex ile aynıdır.
Bu metot çağrıldığında aşağıdaki adımları gerçekleştirir:
obj , this değeri olsun.
taRecord , ? ValidateTypedArray (obj , seq-cst) olsun.
length , TypedArrayLength (taRecord ) olsun.
findRecord , ? FindViaPredicate (obj , length , ascending, predicate , thisArg ) olsun.
findRecord .[[Index]] döndür.
Bu metot genel (generic) değildir. this değeri, [[TypedArrayName]] dahili yuvasına sahip bir nesne olmalıdır.
# 23.2.3.13 %TypedArray%.prototype.findLast ( predicate [ , thisArg ] )
Bu metodun argümanlarının yorumlanması ve kullanımı, 23.1.3.11 içinde tanımlanan Array.prototype.findLast ile aynıdır.
Bu metot çağrıldığında aşağıdaki adımları gerçekleştirir:
obj , this değeri olsun.
taRecord , ? ValidateTypedArray (obj , seq-cst) olsun.
length , TypedArrayLength (taRecord ) olsun.
findRecord , ? FindViaPredicate (obj , length , descending, predicate , thisArg ) olsun.
findRecord .[[Value]] döndür.
Bu metot genel (generic) değildir. this değeri, [[TypedArrayName]] dahili yuvasına sahip bir nesne olmalıdır.
# 23.2.3.14 %TypedArray%.prototype.findLastIndex ( predicate [ , thisArg ] )
Bu metodun argümanlarının yorumlanması ve kullanımı, 23.1.3.12 içinde tanımlanan Array.prototype.findLastIndex ile aynıdır.
Bu metot çağrıldığında aşağıdaki adımları gerçekleştirir:
obj , this değeri olsun.
taRecord , ? ValidateTypedArray (obj , seq-cst) olsun.
length , TypedArrayLength (taRecord ) olsun.
findRecord , ? FindViaPredicate (obj , length , descending, predicate , thisArg ) olsun.
findRecord .[[Index]] döndür.
Bu metot genel (generic) değildir. this değeri, [[TypedArrayName]] dahili yuvasına sahip bir nesne olmalıdır.
# 23.2.3.15 %TypedArray%.prototype.forEach ( callback [ , thisArg ] )
Bu metodun argümanlarının yorumlanması ve kullanımı, 23.1.3.15 içinde tanımlanan Array.prototype.forEach ile aynıdır.
Bu metot çağrıldığında aşağıdaki adımları gerçekleştirir:
obj , this değeri olsun.
taRecord , ? ValidateTypedArray (obj , seq-cst) olsun.
length , TypedArrayLength (taRecord ) olsun.
Eğer IsCallable (callback ) false ise, bir TypeError istisnası fırlat.
k , 0 olsun.
k < length olduğu sürece tekrarla,
propertyKey , ! ToString (𝔽 (k )) olsun.
kValue , ! Get (obj , propertyKey ) olsun.
? Call (callback , thisArg , « kValue , 𝔽 (k ), obj ») işlemini gerçekleştir.
k değerini k + 1 olarak ayarla.
undefined döndür.
Bu metot genel (generic) değildir. this değeri, [[TypedArrayName]] dahili yuvasına sahip bir nesne olmalıdır.
# 23.2.3.16 %TypedArray%.prototype.includes ( searchElement [ , fromIndex ] )
Bu metodun argümanlarının yorumlanması ve kullanımı, 23.1.3.16 içinde tanımlanan Array.prototype.includes ile aynıdır.
Bu metot çağrıldığında aşağıdaki adımları gerçekleştirir:
obj , this değeri olsun.
taRecord , ? ValidateTypedArray (obj , seq-cst) olsun.
length , TypedArrayLength (taRecord ) olsun.
Eğer length = 0 ise, false döndür.
n , ? ToIntegerOrInfinity (fromIndex ) olsun.
Assert : Eğer fromIndex undefined ise, n 0'dır.
Eğer n = +∞ ise, false döndür.
Eğer n = -∞ ise, n değerini 0 olarak ayarla.
Eğer n ≥ 0 ise,
k , n olsun.
Değilse,
k , length + n olsun.
Eğer k < 0 ise, k değerini 0 olarak ayarla.
k < length olduğu sürece tekrarla,
elementK , ! Get (obj , ! ToString (𝔽 (k ))) olsun.
Eğer SameValueZero (searchElement , elementK ) true ise, true döndür.
k değerini k + 1 olarak ayarla.
false döndür.
Bu metot genel (generic) değildir. this değeri, [[TypedArrayName]] dahili yuvasına sahip bir nesne olmalıdır.
# 23.2.3.17 %TypedArray%.prototype.indexOf ( searchElement [ , fromIndex ] )
Bu metodun argümanlarının yorumlanması ve kullanımı, 23.1.3.17 içinde tanımlanan Array.prototype.indexOf ile aynıdır.
Bu metot çağrıldığında aşağıdaki adımları gerçekleştirir:
obj , this değeri olsun.
taRecord , ? ValidateTypedArray (obj , seq-cst) olsun.
length , TypedArrayLength (taRecord ) olsun.
Eğer length = 0 ise, -1𝔽 döndür.
n , ? ToIntegerOrInfinity (fromIndex ) olsun.
Assert : Eğer fromIndex undefined ise, n 0'dır.
Eğer n = +∞ ise, -1𝔽 döndür.
Eğer n = -∞ ise, n değerini 0 olarak ayarla.
Eğer n ≥ 0 ise,
k , n olsun.
Değilse,
k , length + n olsun.
Eğer k < 0 ise, k değerini 0 olarak ayarla.
k < length olduğu sürece tekrarla,
propertyKey , ! ToString (𝔽 (k )) olsun.
kPresent , ! HasProperty (obj , propertyKey ) olsun.
Eğer kPresent true ise,
elementK , ! Get (obj , propertyKey ) olsun.
Eğer IsStrictlyEqual (searchElement , elementK ) true ise, 𝔽 (k ) döndür.
k değerini k + 1 olarak ayarla.
-1𝔽 döndür.
Bu metot genel (generic) değildir. this değeri, [[TypedArrayName]] dahili yuvasına sahip bir nesne olmalıdır.
# 23.2.3.18 %TypedArray%.prototype.join ( separator )
Bu metodun argümanlarının yorumlanması ve kullanımı, 23.1.3.18 içinde tanımlanan Array.prototype.join ile aynıdır.
Bu metot çağrıldığında aşağıdaki adımları gerçekleştirir:
obj , this değeri olsun.
taRecord , ? ValidateTypedArray (obj , seq-cst) olsun.
length , TypedArrayLength (taRecord ) olsun.
Eğer separator undefined ise, sep "," olsun.
Değilse, sep , ? ToString (separator ) olsun.
result , boş Dize (String) olsun.
k , 0 olsun.
k < length olduğu sürece tekrarla,
Eğer k > 0 ise, result değerini, result ve sep 'in dize birleşimi (string-concatenation) olarak ayarla.
element , ! Get (obj , ! ToString (𝔽 (k ))) olsun.
Eğer element undefined değilse,
elementString , ! ToString (element ) olsun.
result değerini, result ve elementString 'in dize birleşimi (string-concatenation) olarak ayarla.
k değerini k + 1 olarak ayarla.
result döndür.
Bu metot genel (generic) değildir. this değeri, [[TypedArrayName]] dahili yuvasına sahip bir nesne olmalıdır.
# 23.2.3.19 %TypedArray%.prototype.keys ( )
Bu metot çağrıldığında aşağıdaki adımları gerçekleştirir:
obj , this değeri olsun.
? ValidateTypedArray (obj , seq-cst) işlemini gerçekleştir.
CreateArrayIterator (obj , key) döndür.
# 23.2.3.20 %TypedArray%.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
Bu metodun argümanlarının yorumlanması ve kullanımı, 23.1.3.20 içinde tanımlanan Array.prototype.lastIndexOf ile aynıdır.
Bu metot çağrıldığında aşağıdaki adımları gerçekleştirir:
obj , this değeri olsun.
taRecord , ? ValidateTypedArray (obj , seq-cst) olsun.
length , TypedArrayLength (taRecord ) olsun.
Eğer length = 0 ise, -1𝔽 döndür.
Eğer fromIndex mevcutsa, n , ? ToIntegerOrInfinity (fromIndex ) olsun; değilse n , length - 1 olsun.
Eğer n = -∞ ise, -1𝔽 döndür.
Eğer n ≥ 0 ise,
k , min (n , length - 1) olsun.
Değilse,
k , length + n olsun.
k ≥ 0 olduğu sürece tekrarla,
propertyKey , ! ToString (𝔽 (k )) olsun.
kPresent , ! HasProperty (obj , propertyKey ) olsun.
Eğer kPresent true ise,
elementK , ! Get (obj , propertyKey ) olsun.
Eğer IsStrictlyEqual (searchElement , elementK ) true ise, 𝔽 (k ) döndür.
k değerini k - 1 olarak ayarla.
-1𝔽 döndür.
Bu metot genel (generic) değildir. this değeri, [[TypedArrayName]] dahili yuvasına sahip bir nesne olmalıdır.
# 23.2.3.21 get %TypedArray%.prototype.length
%TypedArray% .prototype.length, set erişimci (accessor) fonksiyonu undefined olan bir erişimci özelliktir (accessor property) . Get erişimci fonksiyonu çağrıldığında aşağıdaki adımları gerçekleştirir:
obj , this değeri olsun.
? RequireInternalSlot (obj , [[TypedArrayName]] ) işlemini gerçekleştir.
Assert : obj , [[ViewedArrayBuffer]] ve [[ArrayLength]] dahili yuvalarına sahiptir.
taRecord , MakeTypedArrayWithBufferWitnessRecord (obj , seq-cst) olsun.
Eğer IsTypedArrayOutOfBounds (taRecord ) true ise, +0𝔽 döndür.
length , TypedArrayLength (taRecord ) olsun.
𝔽 (length ) döndür.
Bu fonksiyon genel (generic) değildir. this değeri, [[TypedArrayName]] dahili yuvasına sahip bir nesne olmalıdır.
# 23.2.3.22 %TypedArray%.prototype.map ( callback [ , thisArg ] )
Bu metodun argümanlarının yorumlanması ve kullanımı, 23.1.3.21 içinde tanımlanan Array.prototype.map ile aynıdır.
Bu metot çağrıldığında aşağıdaki adımları gerçekleştirir:
obj , this değeri olsun.
taRecord , ? ValidateTypedArray (obj , seq-cst) olsun.
length , TypedArrayLength (taRecord ) olsun.
Eğer IsCallable (callback ) false ise, bir TypeError istisnası fırlat.
result , ? TypedArraySpeciesCreate (obj , « 𝔽 (length ) ») olsun.
k , 0 olsun.
k < length olduğu sürece tekrarla,
propertyKey , ! ToString (𝔽 (k )) olsun.
kValue , ! Get (obj , propertyKey ) olsun.
mappedValue , ? Call (callback , thisArg , « kValue , 𝔽 (k ), obj ») olsun.
? Set (result , propertyKey , mappedValue , true) işlemini gerçekleştir.
k değerini k + 1 olarak ayarla.
result döndür.
Bu metot genel (generic) değildir. this değeri, [[TypedArrayName]] dahili yuvasına sahip bir nesne olmalıdır.
# 23.2.3.23 %TypedArray%.prototype.reduce ( callback [ , initialValue ] )
Bu metodun argümanlarının yorumlanması ve kullanımı, 23.1.3.24 içinde tanımlanan Array.prototype.reduce ile aynıdır.
Bu metot çağrıldığında aşağıdaki adımları gerçekleştirir:
obj , this değeri olsun.
taRecord , ? ValidateTypedArray (obj , seq-cst) olsun.
length , TypedArrayLength (taRecord ) olsun.
Eğer IsCallable (callback ) false ise, bir TypeError istisnası fırlat.
Eğer length = 0 ise ve initialValue mevcut değilse, bir TypeError istisnası fırlat.
k , 0 olsun.
accumulator , undefined olsun.
Eğer initialValue mevcutsa, o zaman
accumulator değerini initialValue olarak ayarla.
Değilse,
propertyKey , ! ToString (𝔽 (k )) olsun.
accumulator değerini ! Get (obj , propertyKey ) olarak ayarla.
k değerini k + 1 olarak ayarla.
k < length olduğu sürece tekrarla,
propertyKey , ! ToString (𝔽 (k )) olsun.
kValue , ! Get (obj , propertyKey ) olsun.
accumulator değerini ? Call (callback , undefined, « accumulator , kValue , 𝔽 (k ), obj ») olarak ayarla.
k değerini k + 1 olarak ayarla.
accumulator döndür.
Bu metot genel (generic) değildir. this değeri, [[TypedArrayName]] dahili yuvasına sahip bir nesne olmalıdır.
# 23.2.3.24 %TypedArray%.prototype.reduceRight ( callback [ , initialValue ] )
Bu metodun argümanlarının yorumlanması ve kullanımı, 23.1.3.25 içinde tanımlanan Array.prototype.reduceRight ile aynıdır.
Bu metot çağrıldığında aşağıdaki adımları gerçekleştirir:
obj , this değeri olsun.
taRecord , ? ValidateTypedArray (obj , seq-cst) olsun.
length , TypedArrayLength (taRecord ) olsun.
Eğer IsCallable (callback ) false ise, bir TypeError istisnası fırlat.
Eğer length = 0 ise ve initialValue mevcut değilse, bir TypeError istisnası fırlat.
k , length - 1 olsun.
accumulator , undefined olsun.
Eğer initialValue mevcutsa, o zaman
accumulator değerini initialValue olarak ayarla.
Değilse,
propertyKey , ! ToString (𝔽 (k )) olsun.
accumulator değerini ! Get (obj , propertyKey ) olarak ayarla.
k değerini k - 1 olarak ayarla.
k ≥ 0 olduğu sürece tekrarla,
propertyKey , ! ToString (𝔽 (k )) olsun.
kValue , ! Get (obj , propertyKey ) olsun.
accumulator değerini ? Call (callback , undefined, « accumulator , kValue , 𝔽 (k ), obj ») olarak ayarla.
k değerini k - 1 olarak ayarla.
accumulator döndür.
Bu metot genel (generic) değildir. this değeri, [[TypedArrayName]] dahili yuvasına sahip bir nesne olmalıdır.
# 23.2.3.25 %TypedArray%.prototype.reverse ( )
Bu metodun argümanlarının yorumlanması ve kullanımı, 23.1.3.26 içinde tanımlanan Array.prototype.reverse ile aynıdır.
Bu metot çağrıldığında aşağıdaki adımları gerçekleştirir:
obj , this değeri olsun.
taRecord , ? ValidateTypedArray (obj , seq-cst) olsun.
length , TypedArrayLength (taRecord ) olsun.
middle , floor (length / 2) olsun.
lower , 0 olsun.
lower ≠ middle olduğu sürece tekrarla,
upper , length - lower - 1 olsun.
upperP , ! ToString (𝔽 (upper )) olsun.
lowerP , ! ToString (𝔽 (lower )) olsun.
lowerValue , ! Get (obj , lowerP ) olsun.
upperValue , ! Get (obj , upperP ) olsun.
! Set (obj , lowerP , upperValue , true) işlemini gerçekleştir.
! Set (obj , upperP , lowerValue , true) işlemini gerçekleştir.
lower değerini lower + 1 olarak ayarla.
obj döndür.
Bu metot genel (generic) değildir. this değeri, [[TypedArrayName]] dahili yuvasına sahip bir nesne olmalıdır.
# 23.2.3.26 %TypedArray%.prototype.set ( source [ , offset ] )
Bu metot, değerleri source 'dan okuyarak bu TypedArray içindeki birden fazla değeri ayarlar. Detaylar, source 'un türüne göre değişiklik gösterir. İsteğe bağlı offset değeri, bu TypedArray içinde değerlerin yazılacağı ilk eleman dizinini belirtir. Belirtilmezse, 0 olduğu varsayılır.
Çağrıldığında aşağıdaki adımları gerçekleştirir:
target , this değeri olsun.
? RequireInternalSlot (target , [[TypedArrayName]] ) işlemini gerçekleştir.
Assert : target , [[ViewedArrayBuffer]] dahili yuvasına sahiptir.
targetOffset , ? ToIntegerOrInfinity (offset ) olsun.
Eğer targetOffset < 0 ise, bir RangeError istisnası fırlat.
Eğer source , [[TypedArrayName]] dahili yuvasına sahip bir Nesne (Object) ise,
? SetTypedArrayFromTypedArray (target , targetOffset , source ) işlemini gerçekleştir.
Değilse,
? SetTypedArrayFromArrayLike (target , targetOffset , source ) işlemini gerçekleştir.
undefined döndür.
Bu metot genel (generic) değildir. this değeri, [[TypedArrayName]] dahili yuvasına sahip bir nesne olmalıdır.
# 23.2.3.26.1 SetTypedArrayFromArrayLike ( target , targetOffset , source )
SetTypedArrayFromArrayLike soyut işlemi, target (bir TypedArray ), targetOffset (negatif olmayan bir tamsayı (integer) veya +∞) ve source (bir ECMAScript dil değeri fakat bir TypedArray değil) argümanlarını alır ve unused içeren bir olağan tamamlanma (normal completion containing) ya da bir fırlatma tamamlanması (throw completion) döndürür. source 'dan değerleri okuyarak, targetOffset dizininden başlayarak target içinde birden fazla değeri ayarlar. Çağrıldığında aşağıdaki adımları gerçekleştirir:
targetRecord , MakeTypedArrayWithBufferWitnessRecord (target , seq-cst) olsun.
Eğer IsTypedArrayOutOfBounds (targetRecord ) true ise, bir TypeError istisnası fırlat.
targetLength , TypedArrayLength (targetRecord ) olsun.
source değerini ? ToObject (source ) olarak ayarla.
sourceLength , ? LengthOfArrayLike (source ) olsun.
Eğer targetOffset = +∞ ise, bir RangeError istisnası fırlat.
Eğer sourceLength + targetOffset > targetLength ise, bir RangeError istisnası fırlat.
k , 0 olsun.
k < sourceLength olduğu sürece tekrarla,
propertyKey , ! ToString (𝔽 (k )) olsun.
value , ? Get (source , propertyKey ) olsun.
targetIndex , 𝔽 (targetOffset + k ) olsun.
? TypedArraySetElement (target , targetIndex , value ) işlemini gerçekleştir.
k değerini k + 1 olarak ayarla.
unused döndür.
# 23.2.3.26.2 SetTypedArrayFromTypedArray ( target , targetOffset , source )
SetTypedArrayFromTypedArray soyut işlemi, target (bir TypedArray ), targetOffset (negatif olmayan bir tamsayı (integer) veya +∞) ve source (bir TypedArray ) argümanlarını alır ve unused içeren bir olağan tamamlanma (normal completion containing) ya da bir fırlatma tamamlanması (throw completion) döndürür. source 'dan değerleri okuyarak, targetOffset dizininden başlayarak target içinde birden fazla değeri ayarlar. Çağrıldığında aşağıdaki adımları gerçekleştirir:
targetBuffer , target .[[ViewedArrayBuffer]] olsun.
targetRecord , MakeTypedArrayWithBufferWitnessRecord (target , seq-cst) olsun.
Eğer IsTypedArrayOutOfBounds (targetRecord ) true ise, bir TypeError istisnası fırlat.
targetLength , TypedArrayLength (targetRecord ) olsun.
sourceBuffer , source .[[ViewedArrayBuffer]] olsun.
sourceRecord , MakeTypedArrayWithBufferWitnessRecord (source , seq-cst) olsun.
Eğer IsTypedArrayOutOfBounds (sourceRecord ) true ise, bir TypeError istisnası fırlat.
sourceLength , TypedArrayLength (sourceRecord ) olsun.
targetType , TypedArrayElementType (target ) olsun.
targetElementSize , TypedArrayElementSize (target ) olsun.
targetByteOffset , target .[[ByteOffset]] olsun.
sourceType , TypedArrayElementType (source ) olsun.
sourceElementSize , TypedArrayElementSize (source ) olsun.
sourceByteOffset , source .[[ByteOffset]] olsun.
Eğer targetOffset = +∞ ise, bir RangeError istisnası fırlat.
Eğer sourceLength + targetOffset > targetLength ise, bir RangeError istisnası fırlat.
Eğer target .[[ContentType]] değeri source .[[ContentType]] değeri ile aynı değilse, bir TypeError istisnası fırlat.
Eğer IsSharedArrayBuffer (sourceBuffer ) true, IsSharedArrayBuffer (targetBuffer ) true ve sourceBuffer .[[ArrayBufferData]] değeri targetBuffer .[[ArrayBufferData]] ile aynıysa, sameSharedArrayBuffer true olsun; değilse sameSharedArrayBuffer false olsun.
Eğer SameValue (sourceBuffer , targetBuffer ) true veya sameSharedArrayBuffer true ise, o zaman
sourceByteLength , TypedArrayByteLength (sourceRecord ) olsun.
sourceBuffer değerini ? CloneArrayBuffer (sourceBuffer , sourceByteOffset , sourceByteLength ) olarak ayarla.
sourceByteIndex , 0 olsun.
Değilse,
sourceByteIndex , sourceByteOffset olsun.
targetByteIndex , (targetOffset × targetElementSize ) + targetByteOffset olsun.
limit , targetByteIndex + (targetElementSize × sourceLength ) olsun.
Eğer sourceType değeri targetType ile aynıysa, o zaman
NOTE : Aktarım, kaynak verinin bit düzeyindeki kodlamasını koruyacak şekilde gerçekleştirilmelidir.
targetByteIndex < limit olduğu sürece tekrarla,
value , GetValueFromBuffer (sourceBuffer , sourceByteIndex , uint8, true, unordered) olsun.
SetValueInBuffer (targetBuffer , targetByteIndex , uint8, value , true, unordered) işlemini gerçekleştir.
sourceByteIndex değerini sourceByteIndex + 1 olarak ayarla.
targetByteIndex değerini targetByteIndex + 1 olarak ayarla.
Değilse,
targetByteIndex < limit olduğu sürece tekrarla,
value , GetValueFromBuffer (sourceBuffer , sourceByteIndex , sourceType , true, unordered) olsun.
SetValueInBuffer (targetBuffer , targetByteIndex , targetType , value , true, unordered) işlemini gerçekleştir.
sourceByteIndex değerini sourceByteIndex + sourceElementSize olarak ayarla.
targetByteIndex değerini targetByteIndex + targetElementSize olarak ayarla.
unused döndür.
# 23.2.3.27 %TypedArray%.prototype.slice ( start , end )
Bu metodun argümanlarının yorumlanması ve kullanımı, 23.1.3.28 içinde tanımlanan Array.prototype.slice ile aynıdır.
Bu metot çağrıldığında aşağıdaki adımları gerçekleştirir:
obj , this değeri olsun.
taRecord , ? ValidateTypedArray (obj , seq-cst) olsun.
sourceArrayLength , TypedArrayLength (taRecord ) olsun.
relativeStart , ? ToIntegerOrInfinity (start ) olsun.
Eğer relativeStart = -∞ ise, startIndex 0 olsun.
Değilse eğer relativeStart < 0 ise, startIndex , max (sourceArrayLength + relativeStart , 0) olsun.
Değilse, startIndex , min (relativeStart , sourceArrayLength ) olsun.
Eğer end undefined ise, relativeEnd , sourceArrayLength olsun; değilse relativeEnd , ? ToIntegerOrInfinity (end ) olsun.
Eğer relativeEnd = -∞ ise, endIndex 0 olsun.
Değilse eğer relativeEnd < 0 ise, endIndex , max (sourceArrayLength + relativeEnd , 0) olsun.
Değilse, endIndex , min (relativeEnd , sourceArrayLength ) olsun.
countBytes , max (endIndex - startIndex , 0) olsun.
resultArray , ? TypedArraySpeciesCreate (obj , « 𝔽 (countBytes ) ») olsun.
Eğer countBytes > 0 ise, o zaman
taRecord değerini MakeTypedArrayWithBufferWitnessRecord (obj , seq-cst) olarak ayarla.
Eğer IsTypedArrayOutOfBounds (taRecord ) true ise, bir TypeError istisnası fırlat.
endIndex değerini min (endIndex , TypedArrayLength (taRecord )) olarak ayarla.
countBytes değerini max (endIndex - startIndex , 0) olarak ayarla.
sourceType , TypedArrayElementType (obj ) olsun.
targetType , TypedArrayElementType (resultArray ) olsun.
Eğer sourceType değeri targetType ile aynıysa, o zaman
NOTE : Aktarım, kaynak verinin bit düzeyindeki kodlamasını koruyacak şekilde gerçekleştirilmelidir.
sourceBuffer , obj .[[ViewedArrayBuffer]] olsun.
targetBuffer , resultArray .[[ViewedArrayBuffer]] olsun.
elementSize , TypedArrayElementSize (obj ) olsun.
sourceByteOffset , obj .[[ByteOffset]] olsun.
sourceByteIndex , (startIndex × elementSize ) + sourceByteOffset olsun.
targetByteIndex , resultArray .[[ByteOffset]] olsun.
endByteIndex , targetByteIndex + (countBytes × elementSize ) olsun.
targetByteIndex < endByteIndex olduğu sürece tekrarla,
1. *value*, [GetValueFromBuffer](26_sec-structured-data.md#sec-getvaluefrombuffer)(*sourceBuffer*, *sourceByteIndex*, `uint8`, `true`, `unordered`) olsun.
2. [SetValueInBuffer](26_sec-structured-data.md#sec-setvalueinbuffer)(*targetBuffer*, *targetByteIndex*, `uint8`, *value*, `true`, `unordered`) işlemini gerçekleştir.
3. *sourceByteIndex* değerini *sourceByteIndex* + 1 olarak ayarla.
4. *targetByteIndex* değerini *targetByteIndex* + 1 olarak ayarla.
Değilse,
n , 0 olsun.
k , startIndex olsun.
k < endIndex olduğu sürece tekrarla,
1. *propertyKey*, ! [ToString](08_sec-abstract-operations.md#sec-tostring)([𝔽](06_sec-notational-conventions.md#𝔽)(*k*)) olsun.
2. *kValue*, ! [Get](08_sec-abstract-operations.md#sec-get-o-p)(*obj*, *propertyKey*) olsun.
3. ! [Set](08_sec-abstract-operations.md#sec-set-o-p-v-throw)(*resultArray*, ! [ToString](08_sec-abstract-operations.md#sec-tostring)([𝔽](06_sec-notational-conventions.md#𝔽)(*n*)), *kValue*, `true`) işlemini gerçekleştir.
4. *k* değerini *k* + 1 olarak ayarla.
5. *n* değerini *n* + 1 olarak ayarla.
resultArray döndür.
Bu metot genel (generic) değildir. this değeri, [[TypedArrayName]] dahili yuvasına sahip bir nesne olmalıdır.
# 23.2.3.28 %TypedArray%.prototype.some ( callback [ , thisArg ] )
Bu metodun argümanlarının yorumlanması ve kullanımı, 23.1.3.29 içinde tanımlanan Array.prototype.some ile aynıdır.
Bu metot çağrıldığında aşağıdaki adımları gerçekleştirir:
obj , this değeri olsun.
taRecord , ? ValidateTypedArray (obj , seq-cst) olsun.
length , TypedArrayLength (taRecord ) olsun.
Eğer IsCallable (callback ) false ise, bir TypeError istisnası fırlat.
k , 0 olsun.
k < length olduğu sürece tekrarla,
propertyKey , ! ToString (𝔽 (k )) olsun.
kValue , ! Get (obj , propertyKey ) olsun.
testResult , ToBoolean (? Call (callback , thisArg , « kValue , 𝔽 (k ), obj »)) olsun.
Eğer testResult true ise, true döndür.
k değerini k + 1 olarak ayarla.
false döndür.
Bu metot genel (generic) değildir. this değeri, [[TypedArrayName]] dahili yuvasına sahip bir nesne olmalıdır.
# 23.2.3.29 %TypedArray%.prototype.sort ( comparator )
Bu, aşağıda açıklananlar hariç, 23.1.3.30 içinde tanımlanan Array.prototype.sort ile aynı gereksinimleri uygulayan ayrı bir metottur. Bu metodun uygulanması, this değerinin sabit bir uzunluğa sahip olan ve tamsayı dizinli (integer-indexed) özellikleri seyrek (sparse) olmayan bir nesne olduğu bilgisiyle optimize edilebilir.
Bu metot genel (generic) değildir. this değeri, [[TypedArrayName]] dahili yuvasına sahip bir nesne olmalıdır.
Çağrıldığında aşağıdaki adımları gerçekleştirir:
Eğer comparator undefined değilse ve IsCallable (comparator ) false ise, bir TypeError istisnası fırlat.
obj , this değeri olsun.
taRecord , ? ValidateTypedArray (obj , seq-cst) olsun.
length , TypedArrayLength (taRecord ) olsun.
NOTE : Aşağıdaki kapatma (closure), 23.1.3.30 içinde kullanılan dize karşılaştırması yerine sayısal bir karşılaştırma gerçekleştirir.
sortCompare , comparator değerini yakalayan ve çağrıldığında aşağıdaki adımları gerçekleştiren, (x , y ) parametrelerine sahip yeni bir Soyut Kapatma (Abstract Closure) olsun:
? CompareTypedArrayElements (x , y , comparator ) döndür.
sortedList , ? SortIndexedProperties (obj , length , sortCompare , read-through-holes) olsun.
j , 0 olsun.
j < length olduğu sürece tekrarla,
! Set (obj , ! ToString (𝔽 (j )), sortedList [j ], true) işlemini gerçekleştir.
j değerini j + 1 olarak ayarla.
obj döndür.
NOT
NaN değeri her zaman diğer tüm değerlerden daha büyük olarak karşılaştırıldığı için (bkz. CompareTypedArrayElements ), comparator sağlanmadığında NaN özellik değerleri her zaman sonucun sonuna sıralanır.
# 23.2.3.30 %TypedArray%.prototype.subarray ( start , end )
Bu metot, eleman türü bu TypedArray 'in eleman türü olan ve ArrayBuffer'ı bu TypedArray 'in ArrayBuffer'ı olan, start (dahil) ile end (hariç) arasındaki aralıktaki (interval) elemanlara başvuran yeni bir TypedArray döndürür. start veya end değerlerinden biri negatifse, başlangıç yerine dizinin sonundan itibaren bir dizine atıfta bulunur.
Çağrıldığında aşağıdaki adımları gerçekleştirir:
obj , this değeri olsun.
? RequireInternalSlot (obj , [[TypedArrayName]] ) işlemini gerçekleştir.
Assert : obj , [[ViewedArrayBuffer]] dahili yuvasına sahiptir.
buffer , obj .[[ViewedArrayBuffer]] olsun.
sourceRecord , MakeTypedArrayWithBufferWitnessRecord (obj , seq-cst) olsun.
Eğer IsTypedArrayOutOfBounds (sourceRecord ) true ise, o zaman
sourceLength , 0 olsun.
Değilse,
sourceLength , TypedArrayLength (sourceRecord ) olsun.
relativeStart , ? ToIntegerOrInfinity (start ) olsun.
Eğer relativeStart = -∞ ise, startIndex 0 olsun.
Değilse eğer relativeStart < 0 ise, startIndex , max (sourceLength + relativeStart , 0) olsun.
Değilse, startIndex , min (relativeStart , sourceLength ) olsun.
elementSize , TypedArrayElementSize (obj ) olsun.
sourceByteOffset , obj .[[ByteOffset]] olsun.
beginByteOffset , sourceByteOffset + (startIndex × elementSize ) olsun.
Eğer obj .[[ArrayLength]] değeri auto ise ve end undefined ise, o zaman
argList , « buffer , 𝔽 (beginByteOffset ) » olsun.
Değilse,
Eğer end undefined ise, relativeEnd , sourceLength olsun; değilse relativeEnd , ? ToIntegerOrInfinity (end ) olsun.
Eğer relativeEnd = -∞ ise, endIndex 0 olsun.
Değilse eğer relativeEnd < 0 ise, endIndex , max (sourceLength + relativeEnd , 0) olsun.
Değilse, endIndex , min (relativeEnd , sourceLength ) olsun.
newLength , max (endIndex - startIndex , 0) olsun.
argList , « buffer , 𝔽 (beginByteOffset ), 𝔽 (newLength ) » olsun.
? TypedArraySpeciesCreate (obj , argList ) döndür.
Bu metot genel (generic) değildir. this değeri, [[TypedArrayName]] dahili yuvasına sahip bir nesne olmalıdır.
# 23.2.3.31 %TypedArray%.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] )
Bu, "length" özelliğinin bir [[Get]] işlemini gerçekleştirmek yerine TypedArrayLength çağrılması hariç, 23.1.3.32 içinde tanımlanan Array.prototype.toLocaleString ile aynı algoritmayı uygulayan ayrı bir metottur. Algoritmanın uygulanması, alttaki arabellek (buffer) yeniden boyutlandırılamaz olduğunda this değerinin sabit bir uzunluğa sahip olduğu ve tamsayı dizinli (integer-indexed) özelliklerinin seyrek (sparse) olmadığı bilgisiyle optimize edilebilir. Ancak bu tür bir optimizasyon, algoritmanın belirtilen davranışında gözlemlenebilir herhangi bir değişikliğe yol açmamalıdır.
Bu metot genel (generic) değildir. Algoritma değerlendirilmeden önce, this değeri ve seq-cst argüman olarak verilerek ValidateTypedArray çağrılır. Eğer sonuç bir ani sonlanma (abrupt completion) ise, algoritmayı değerlendirmek yerine bu istisna fırlatılır.
NOT
Eğer ECMAScript uygulaması ECMA-402 Uluslararasılaştırma (Internationalization) API'sini içeriyorsa, bu metot ECMA-402 belirtimindeki Array.prototype.toLocaleString algoritmasını temel alır.
# 23.2.3.32 %TypedArray%.prototype.toReversed ( )
Bu metot çağrıldığında aşağıdaki adımları gerçekleştirir:
obj , this değeri olsun.
taRecord , ? ValidateTypedArray (obj , seq-cst) olsun.
length , TypedArrayLength (taRecord ) olsun.
resultArray , ? TypedArrayCreateSameType (obj , length ) olsun.
k , 0 olsun.
k < length olduğu sürece tekrarla,
from , ! ToString (𝔽 (length - k - 1)) olsun.
propertyKey , ! ToString (𝔽 (k )) olsun.
fromValue , ! Get (obj , from ) olsun.
! Set (resultArray , propertyKey , fromValue , true) işlemini gerçekleştir.
k değerini k + 1 olarak ayarla.
resultArray döndür.
# 23.2.3.33 %TypedArray%.prototype.toSorted ( comparator )
Bu metot çağrıldığında aşağıdaki adımları gerçekleştirir:
Eğer comparator undefined değilse ve IsCallable (comparator ) false ise, bir TypeError istisnası fırlat.
obj , this değeri olsun.
taRecord , ? ValidateTypedArray (obj , seq-cst) olsun.
length , TypedArrayLength (taRecord ) olsun.
resultArray , ? TypedArrayCreateSameType (obj , length ) olsun.
NOTE : Aşağıdaki kapatma (closure), 23.1.3.34 içinde kullanılan dize karşılaştırması yerine sayısal bir karşılaştırma gerçekleştirir.
sortCompare , comparator değerini yakalayan ve çağrıldığında aşağıdaki adımları gerçekleştiren, (x , y ) parametrelerine sahip yeni bir Soyut Kapatma (Abstract Closure) olsun:
? CompareTypedArrayElements (x , y , comparator ) döndür.
sortedList , ? SortIndexedProperties (obj , length , sortCompare , read-through-holes) olsun.
j , 0 olsun.
j < length olduğu sürece tekrarla,
! Set (resultArray , ! ToString (𝔽 (j )), sortedList [j ], true) işlemini gerçekleştir.
j değerini j + 1 olarak ayarla.
resultArray döndür.
# 23.2.3.34 %TypedArray%.prototype.toString ( )
"toString" özelliğinin ilk değeri, 23.1.3.36 içinde tanımlanan %Array.prototype.toString% değeridir.
# 23.2.3.35 %TypedArray%.prototype.values ( )
Bu metot çağrıldığında aşağıdaki adımları gerçekleştirir:
obj , this değeri olsun.
? ValidateTypedArray (obj , seq-cst) işlemini gerçekleştir.
CreateArrayIterator (obj , value) döndür.
# 23.2.3.36 %TypedArray%.prototype.with ( index , value )
Bu metot çağrıldığında aşağıdaki adımları gerçekleştirir:
obj , this değeri olsun.
taRecord , ? ValidateTypedArray (obj , seq-cst).
length , TypedArrayLength (taRecord ) olsun.
relativeIndex , ? ToIntegerOrInfinity (index ) olsun.
Eğer relativeIndex ≥ 0 ise, actualIndex , relativeIndex olsun.
Değilse, actualIndex , length + relativeIndex olsun.
Eğer obj .[[ContentType]] değeri bigint ise, numericValue , ? ToBigInt (value ) olsun.
Değilse, numericValue , ? ToNumber (value ) olsun.
Eğer IsValidIntegerIndex (obj , 𝔽 (actualIndex )) false ise, bir RangeError istisnası fırlat.
resultArray , ? TypedArrayCreateSameType (obj , length ) olsun.
k , 0 olsun.
k < length olduğu sürece tekrarla,
propertyKey , ! ToString (𝔽 (k )) olsun.
Eğer k = actualIndex ise, fromValue , numericValue olsun.
Değilse, fromValue , ! Get (obj , propertyKey ) olsun.
! Set (resultArray , propertyKey , fromValue , true) işlemini gerçekleştir.
k değerini k + 1 olarak ayarla.
resultArray döndür.
# 23.2.3.37 %TypedArray%.prototype [ %Symbol.iterator% ] ( )
%Symbol.iterator% özelliğinin ilk değeri, 23.2.3.35 içinde tanımlanan %TypedArray.prototype.values% değeridir.
# 23.2.3.38 get %TypedArray%.prototype [ %Symbol.toStringTag% ]
%TypedArray% .prototype[%Symbol.toStringTag%], set erişimci (accessor) fonksiyonu undefined olan bir erişimci özelliktir (accessor property) . Get erişimci fonksiyonu çağrıldığında aşağıdaki adımları gerçekleştirir:
obj , this değeri olsun.
Eğer obj bir Nesne değilse (is not an Object) , undefined döndür.
Eğer obj , [[TypedArrayName]] dahili yuvasına sahip değilse, undefined döndür.
name , obj .[[TypedArrayName]] olsun.
Assert : name , bir Dizedir (is a String) .
name döndür.
Bu özellik { [[Enumerable]] : false, [[Configurable]] : true } özniteliklerine sahiptir.
Bu fonksiyonun "name" özelliğinin ilk değeri "get [Symbol.toStringTag]" şeklindedir.
# 23.2.4 TypedArray Nesneleri İçin Soyut İşlemler
# 23.2.4.1 TypedArrayCreateFromConstructor ( ctor , argList )
TypedArrayCreateFromConstructor soyut işlemi, ctor (bir yapıcı (constructor) ) ve argList (bir ECMAScript dil değerleri Listesi (List) ) argümanlarını alır ve bir TypedArray içeren olağan tamamlanma (normal completion containing) ya da bir fırlatma tamamlanması (throw completion) döndürür. Bir yapıcı (constructor) fonksiyonu kullanılarak yeni bir TypedArray oluşturulmasını belirtmek için kullanılır. Çağrıldığında aşağıdaki adımları gerçekleştirir:
ta , ? Construct (ctor , argList ) olsun.
taRecord , ? ValidateTypedArray (ta , seq-cst) olsun.
Assert : ta , TypedArray Örneklerinin Özellikleri bölümünde belirtilen tüm dahili yuvalara sahiptir.
Eğer argList içindeki eleman sayısı 1 ise ve argList [0], bir Sayı ise (is a Number) , o zaman
Eğer IsTypedArrayOutOfBounds (taRecord ) true ise, bir TypeError istisnası fırlat.
length , TypedArrayLength (taRecord ) olsun.
Eğer length < ℝ (argList [0]) ise, bir TypeError istisnası fırlat.
ta döndür.
# 23.2.4.2 TypedArrayCreateSameType ( exemplar , length )
TypedArrayCreateSameType soyut işlemi, exemplar (bir TypedArray ) ve length (negatif olmayan bir tamsayı (integer) ) argümanlarını alır ve bir TypedArray içeren olağan tamamlanma (normal completion containing) ya da bir fırlatma tamamlanması (throw completion) döndürür. exemplar nesnesinden türetilen bir yapıcı (constructor) fonksiyonu kullanarak yeni bir TypedArray oluşturulmasını belirtmek için kullanılır. %Symbol.species% kullanımı aracılığıyla özel TypedArray alt sınıfları oluşturabilen TypedArraySpeciesCreate işleminin aksine, bu işlem her zaman yerleşik TypedArray yapıcılarından (constructors) birini kullanır. Çağrıldığında aşağıdaki adımları gerçekleştirir:
ctor , Tablo 70 içindeki exemplar .[[TypedArrayName]] yapıcı adıyla ilişkili yerleşik nesne olsun.
result , ? TypedArrayCreateFromConstructor (ctor , « 𝔽 (length ) ») olsun.
Assert : result , [[TypedArrayName]] ve [[ContentType]] dahili yuvalarına sahiptir.
Assert : result .[[ContentType]] değeri exemplar .[[ContentType]] ile aynıdır.
result döndür.
# 23.2.4.3 TypedArraySpeciesCreate ( exemplar , argList )
TypedArraySpeciesCreate soyut işlemi, exemplar (bir TypedArray ) ve argList (bir ECMAScript dil değerleri Listesi (List) ) argümanlarını alır ve bir TypedArray içeren olağan tamamlanma (normal completion containing) ya da bir fırlatma tamamlanması (throw completion) döndürür. exemplar nesnesinden türetilen bir yapıcı (constructor) fonksiyonu kullanarak yeni bir TypedArray oluşturulmasını belirtmek için kullanılır. %Symbol.species% kullanımıyla Dizi (Array) olmayan nesneler oluşturabilen ArraySpeciesCreate işleminin aksine, bu işlem yapıcı (constructor) fonksiyonunun gerçek bir TypedArray oluşturmasını zorunlu kılar. Çağrıldığında aşağıdaki adımları gerçekleştirir:
defaultCtor , Tablo 70 içindeki exemplar .[[TypedArrayName]] yapıcı adıyla ilişkili yerleşik nesne olsun.
ctor , ? SpeciesConstructor (exemplar , defaultCtor ) olsun.
result , ? TypedArrayCreateFromConstructor (ctor , argList ) olsun.
Eğer result .[[ContentType]] değeri exemplar .[[ContentType]] ile aynı değilse, bir TypeError istisnası fırlat.
result döndür.
# 23.2.4.4 ValidateTypedArray ( obj , order )
ValidateTypedArray soyut işlemi, obj (bir ECMAScript dil değeri ) ve order (seq-cst veya unordered) argümanlarını alır ve bir TypedArray With Buffer Witness Record içeren olağan tamamlanma (normal completion containing) ya da bir fırlatma tamamlanması (throw completion) döndürür. Çağrıldığında aşağıdaki adımları gerçekleştirir:
? RequireInternalSlot (obj , [[TypedArrayName]] ) işlemini gerçekleştir.
Assert : obj , [[ViewedArrayBuffer]] dahili yuvasına sahiptir.
taRecord , MakeTypedArrayWithBufferWitnessRecord (obj , order ) olsun.
Eğer IsTypedArrayOutOfBounds (taRecord ) true ise, bir TypeError istisnası fırlat.
taRecord döndür.
# 23.2.4.5 TypedArrayElementSize ( obj )
TypedArrayElementSize soyut işlemi, obj (bir TypedArray ) argümanını alır ve negatif olmayan bir tamsayı (integer) döndürür. Çağrıldığında aşağıdaki adımları gerçekleştirir:
Tablo 70 içinde obj .[[TypedArrayName]] için belirtilen Eleman Boyutu (Element Size) değerini döndür.
# 23.2.4.6 TypedArrayElementType ( obj )
TypedArrayElementType soyut işlemi, obj (bir TypedArray ) argümanını alır ve bir TypedArray eleman türü (TypedArray element type) döndürür. Çağrıldığında aşağıdaki adımları gerçekleştirir:
Tablo 70 içinde obj .[[TypedArrayName]] için belirtilen Eleman Türü (Element Type) değerini döndür.
# 23.2.4.7 CompareTypedArrayElements ( x , y , comparator )
CompareTypedArrayElements soyut işlemi, x (bir Sayı veya BigInt), y (bir Sayı veya BigInt) ve comparator (bir fonksiyon nesnesi (function object) veya undefined) argümanlarını alır ve bir Sayı içeren olağan tamamlanma (normal completion containing) ya da bir ani sonlanma (abrupt completion) döndürür. Çağrıldığında aşağıdaki adımları gerçekleştirir:
Assert : x bir Sayıdır (is a Number) ve y bir Sayıdır (is a Number) , ya da x bir BigInt'tir (is a BigInt) ve y bir BigInt'tir (is a BigInt) .
Eğer comparator undefined değilse, o zaman
result , ? ToNumber (? Call (comparator , undefined, « x , y »)) olsun.
Eğer result NaN ise, +0𝔽 döndür.
result döndür.
Eğer x NaN ve y NaN ise, +0𝔽 döndür.
Eğer x NaN ise, 1𝔽 döndür.
Eğer y NaN ise, -1𝔽 döndür.
Eğer x < y ise, -1𝔽 döndür.
Eğer x > y ise, 1𝔽 döndür.
Eğer x -0𝔽 ve y +0𝔽 ise, -1𝔽 döndür.
Eğer x +0𝔽 ve y -0𝔽 ise, 1𝔽 döndür.
+0𝔽 döndür.
NOT
Bu, 23.1.3.30.2 içinde kullanılan dize karşılaştırması yerine sayısal bir karşılaştırma gerçekleştirir.
# 23.2.5 TypedArray Yapıcıları
Her TypedArray yapıcısı (constructor) :
aksi belirtilmedikçe, Tablo 70 içinde TypedArray yerine yapıcı adı olarak kullanılan isim hariç, aşağıda açıklanan yapıya sahip yerleşik bir nesnedir.
davranışları, argümanlarının sayısına ve türlerine göre farklılık gösteren bir fonksiyondur. Bir TypedArray çağrısının gerçek davranışı, ona geçirilen argümanların sayısına ve türüne bağlıdır.
fonksiyon olarak çağrılması amaçlanmamıştır ve bu şekilde çağrıldığında bir istisna fırlatır.
bir sınıf tanımının extends ifadesinin değeri olarak kullanılabilir. Belirtilen TypedArray davranışını miras almayı amaçlayan alt sınıf yapıcıları (constructors) alt sınıf örneğini oluşturmak ve başlatmak için TypedArray yapıcısına (constructor) bir super çağrısı içermelidir.
# 23.2.5.1 TypedArray ( ...args )
Her TypedArray yapıcısı (constructor) çağrıldığında aşağıdaki adımları gerçekleştirir:
Eğer NewTarget undefined ise, bir TypeError istisnası fırlat.
ctorName , bu TypedArray yapıcısı (constructor) için Tablo 70 içinde belirtilen Yapıcı Adı (Constructor Name) değerinin Dize (String) değeri olsun.
proto , "%*TypedArray*.prototype%" olsun.
numberOfArgs , args içindeki eleman sayısı olsun.
Eğer numberOfArgs = 0 ise, ? AllocateTypedArray (ctorName , NewTarget, proto , 0) döndür.
firstArg , args [0] olsun.
Eğer firstArg bir Nesne ise (is an Object) , o zaman
obj , ? AllocateTypedArray (ctorName , NewTarget, proto ) olsun.
Eğer firstArg , [[TypedArrayName]] dahili yuvasına sahipse, o zaman
? InitializeTypedArrayFromTypedArray (obj , firstArg ) işlemini gerçekleştir.
Değilse eğer firstArg , [[ArrayBufferData]] dahili yuvasına sahipse, o zaman
Eğer numberOfArgs > 1 ise, byteOffset , args [1] olsun; değilse byteOffset , undefined olsun.
Eğer numberOfArgs > 2 ise, length , args [2] olsun; değilse length , undefined olsun.
? InitializeTypedArrayFromArrayBuffer (obj , firstArg , byteOffset , length ) işlemini gerçekleştir.
Değilse,
Assert : firstArg bir Nesnedir (is an Object) ve firstArg , [[TypedArrayName]] veya [[ArrayBufferData]] dahili yuvalarından hiçbirine sahip değildir.
usingIterator , ? GetMethod (firstArg , %Symbol.iterator% ) olsun.
Eğer usingIterator undefined değilse, o zaman
1. *values*, ? [IteratorToList](08_sec-abstract-operations.md#sec-iteratortolist)(? [GetIteratorFromMethod](08_sec-abstract-operations.md#sec-getiteratorfrommethod)(*firstArg*, *usingIterator*)) olsun.
2. ? [InitializeTypedArrayFromList](#sec-initializetypedarrayfromlist)(*obj*, *values*) işlemini gerçekleştir.
Değilse,
1. [NOTE](06_sec-notational-conventions.md#note-step): *firstArg* [yinelenebilir bir nesne (iterable object)](28_sec-control-abstraction-objects.md#sec-iterable-interface) değildir, bu nedenle zaten [dizi benzeri bir nesne (array-like object)](08_sec-abstract-operations.md#sec-lengthofarraylike) olduğunu varsay.
2. ? [InitializeTypedArrayFromArrayLike](#sec-initializetypedarrayfromarraylike)(*obj*, *firstArg*) işlemini gerçekleştir.
obj döndür.
Assert : firstArg bir Nesne değildir (is not an Object) .
elementLength , ? ToIndex (firstArg ) olsun.
? AllocateTypedArray (ctorName , NewTarget, proto , elementLength ) döndür.
# 23.2.5.1.1 AllocateTypedArray ( ctorName , newTarget , defaultProto [ , length ] )
AllocateTypedArray soyut işlemi, ctorName (bir String, Tablo 70 içindeki bir TypedArray yapıcı (constructor) adı), newTarget (bir yapıcı (constructor) ) ve defaultProto (bir String) argümanlarını ve isteğe bağlı length (negatif olmayan bir tamsayı (integer) ) argümanını alır ve bir TypedArray içeren olağan tamamlanma (normal completion containing) ya da bir fırlatma tamamlanması (throw completion) döndürür. Bir TypedArray yapıcısının (constructor) bir örneğini doğrulamak ve oluşturmak için kullanılır. Eğer length argümanı geçirilirse, bu uzunlukta bir ArrayBuffer da tahsis edilir (allocated) ve yeni TypedArray örneğiyle ilişkilendirilir. AllocateTypedArray, TypedArray tarafından kullanılan ortak semantikleri sağlar. Çağrıldığında aşağıdaki adımları gerçekleştirir:
proto , ? GetPrototypeFromConstructor (newTarget , defaultProto ) olsun.
obj , TypedArrayCreate (proto ) olsun.
Assert : obj .[[ViewedArrayBuffer]] değeri undefined'dır.
obj .[[TypedArrayName]] değerini ctorName olarak ayarla.
Eğer ctorName , "BigInt64Array" veya "BigUint64Array" ise, obj .[[ContentType]] değerini bigint olarak ayarla.
Değilse, obj .[[ContentType]] değerini number olarak ayarla.
Eğer length mevcut değilse, o zaman
obj .[[ByteLength]] değerini 0 olarak ayarla.
obj .[[ByteOffset]] değerini 0 olarak ayarla.
obj .[[ArrayLength]] değerini 0 olarak ayarla.
Değilse,
? AllocateTypedArrayBuffer (obj , length ) işlemini gerçekleştir.
obj döndür.
# 23.2.5.1.2 InitializeTypedArrayFromTypedArray ( obj , sourceArray )
InitializeTypedArrayFromTypedArray soyut işlemi, obj (bir TypedArray ) ve sourceArray (bir TypedArray ) argümanlarını alır ve unused içeren bir olağan tamamlanma (normal completion containing) ya da bir fırlatma tamamlanması (throw completion) döndürür. Çağrıldığında aşağıdaki adımları gerçekleştirir:
sourceData , sourceArray .[[ViewedArrayBuffer]] olsun.
elementType , TypedArrayElementType (obj ) olsun.
elementSize , TypedArrayElementSize (obj ) olsun.
sourceType , TypedArrayElementType (sourceArray ) olsun.
sourceElementSize , TypedArrayElementSize (sourceArray ) olsun.
sourceByteOffset , sourceArray .[[ByteOffset]] olsun.
sourceRecord , MakeTypedArrayWithBufferWitnessRecord (sourceArray , seq-cst) olsun.
Eğer IsTypedArrayOutOfBounds (sourceRecord ) true ise, bir TypeError istisnası fırlat.
elementLength , TypedArrayLength (sourceRecord ) olsun.
byteLength , elementSize × elementLength olsun.
Eğer elementType değeri sourceType ile aynıysa, o zaman
data , ? CloneArrayBuffer (sourceData , sourceByteOffset , byteLength ) olsun.
Değilse,
data , ? AllocateArrayBuffer (%ArrayBuffer% , byteLength ) olsun.
Eğer sourceArray .[[ContentType]] değeri obj .[[ContentType]] değeriyle aynı değilse, bir TypeError istisnası fırlat.
sourceByteIndex , sourceByteOffset olsun.
targetByteIndex , 0 olsun.
count , elementLength olsun.
count > 0 olduğu sürece tekrarla,
value , GetValueFromBuffer (sourceData , sourceByteIndex , sourceType , true, unordered) olsun.
SetValueInBuffer (data , targetByteIndex , elementType , value , true, unordered) işlemini gerçekleştir.
sourceByteIndex değerini sourceByteIndex + sourceElementSize olarak ayarla.
targetByteIndex değerini targetByteIndex + elementSize olarak ayarla.
count değerini count - 1 olarak ayarla.
obj .[[ViewedArrayBuffer]] değerini data olarak ayarla.
obj .[[ByteLength]] değerini byteLength olarak ayarla.
obj .[[ByteOffset]] değerini 0 olarak ayarla.
obj .[[ArrayLength]] değerini elementLength olarak ayarla.
unused döndür.
# 23.2.5.1.3 InitializeTypedArrayFromArrayBuffer ( obj , buffer , byteOffset , length )
InitializeTypedArrayFromArrayBuffer soyut işlemi, obj (bir TypedArray ), buffer (bir ArrayBuffer veya SharedArrayBuffer), byteOffset (bir ECMAScript dil değeri ) ve length (bir ECMAScript dil değeri ) argümanlarını alır ve unused içeren bir olağan tamamlanma (normal completion containing) ya da bir fırlatma tamamlanması (throw completion) döndürür. Çağrıldığında aşağıdaki adımları gerçekleştirir:
elementSize , TypedArrayElementSize (obj ) olsun.
offset , ? ToIndex (byteOffset ).
Eğer offset modulo elementSize ≠ 0 ise, bir RangeError istisnası fırlat.
bufferIsFixedLength , IsFixedLengthArrayBuffer (buffer ) olsun.
Eğer length undefined değilse, o zaman
newLength , ? ToIndex (length ) olsun.
Eğer IsDetachedBuffer (buffer ) true ise, bir TypeError istisnası fırlat.
bufferByteLength , ArrayBufferByteLength (buffer , seq-cst) olsun.
Eğer length undefined ise ve bufferIsFixedLength false ise, o zaman
Eğer offset > bufferByteLength ise, bir RangeError istisnası fırlat.
obj .[[ByteLength]] değerini auto olarak ayarla.
obj .[[ArrayLength]] değerini auto olarak ayarla.
Değilse,
Eğer length undefined ise, o zaman
Eğer bufferByteLength modulo elementSize ≠ 0 ise, bir RangeError istisnası fırlat.
newByteLength , bufferByteLength - offset olsun.
Eğer newByteLength < 0 ise, bir RangeError istisnası fırlat.
Değilse,
newByteLength , newLength × elementSize olsun.
Eğer offset + newByteLength > bufferByteLength ise, bir RangeError istisnası fırlat.
obj .[[ByteLength]] değerini newByteLength olarak ayarla.
obj .[[ArrayLength]] değerini newByteLength / elementSize olarak ayarla.
obj .[[ViewedArrayBuffer]] değerini buffer olarak ayarla.
obj .[[ByteOffset]] değerini offset olarak ayarla.
unused döndür.
# 23.2.5.1.4 InitializeTypedArrayFromList ( obj , values )
InitializeTypedArrayFromList soyut işlemi, obj (bir TypedArray ) ve values (bir ECMAScript dil değerleri Listesi (List) ) argümanlarını alır ve unused içeren bir olağan tamamlanma (normal completion containing) ya da bir fırlatma tamamlanması (throw completion) döndürür. Çağrıldığında aşağıdaki adımları gerçekleştirir:
length , values içindeki eleman sayısı olsun.
? AllocateTypedArrayBuffer (obj , length ) işlemini gerçekleştir.
k , 0 olsun.
k < length olduğu sürece tekrarla,
propertyKey , ! ToString (𝔽 (k )) olsun.
kValue , values listesinin ilk elemanı olsun.
values listesinin ilk elemanını kaldır.
? Set (obj , propertyKey , kValue , true) işlemini gerçekleştir.
k değerini k + 1 olarak ayarla.
Assert : values artık boş bir Liste (List) 'dir.
unused döndür.
# 23.2.5.1.5 InitializeTypedArrayFromArrayLike ( obj , arrayLike )
InitializeTypedArrayFromArrayLike soyut işlemi, obj (bir TypedArray ) ve arrayLike (bir Nesne (Object) fakat bir TypedArray veya ArrayBuffer değil) argümanlarını alır ve unused içeren bir olağan tamamlanma (normal completion containing) ya da bir fırlatma tamamlanması (throw completion) döndürür. Çağrıldığında aşağıdaki adımları gerçekleştirir:
length , ? LengthOfArrayLike (arrayLike ) olsun.
? AllocateTypedArrayBuffer (obj , length ) işlemini gerçekleştir.
k , 0 olsun.
k < length olduğu sürece tekrarla,
propertyKey , ! ToString (𝔽 (k )) olsun.
kValue , ? Get (arrayLike , propertyKey ) olsun.
? Set (obj , propertyKey , kValue , true) işlemini gerçekleştir.
k değerini k + 1 olarak ayarla.
unused döndür.
# 23.2.5.1.6 AllocateTypedArrayBuffer ( obj , length )
AllocateTypedArrayBuffer soyut işlemi, obj (bir TypedArray ) ve length (negatif olmayan bir tamsayı (integer) ) argümanlarını alır ve unused içeren bir olağan tamamlanma (normal completion containing) ya da bir fırlatma tamamlanması (throw completion) döndürür. obj ile bir ArrayBuffer tahsis eder (allocates) ve ilişkilendirir. Çağrıldığında aşağıdaki adımları gerçekleştirir:
Assert : obj .[[ViewedArrayBuffer]] değeri undefined'dır.
elementSize , TypedArrayElementSize (obj ) olsun.
byteLength , elementSize × length olsun.
data , ? AllocateArrayBuffer (%ArrayBuffer% , byteLength ) olsun.
obj .[[ViewedArrayBuffer]] değerini data olarak ayarla.
obj .[[ByteLength]] değerini byteLength olarak ayarla.
obj .[[ByteOffset]] değerini 0 olarak ayarla.
obj .[[ArrayLength]] değerini length olarak ayarla.
unused döndür.
# 23.2.6 TypedArray Yapıcılarının Özellikleri
Her TypedArray yapıcısı (constructor) :
değeri %TypedArray% olan bir [[Prototype]] dahili yuvasına sahiptir.
değeri 3𝔽 olan bir "length" özelliğine sahiptir.
değeri, Tablo 70 içinde kendisi için belirtilen yapıcı (constructor) adının Dize (String) değeri olan bir "name" özelliğine sahiptir.
aşağıdaki özelliklere sahiptir:
# 23.2.6.1 TypedArray .BYTES_PER_ELEMENT
TypedArray .BYTES_PER_ELEMENT değeri, Tablo 70 içinde TypedArray için belirtilen Eleman Boyutu (Element Size) değeridir.
Bu özellik { [[Writable]] : false, [[Enumerable]] : false, [[Configurable]] : false } özniteliklerine sahiptir.
# 23.2.6.2 TypedArray .prototype
TypedArray .prototype özelliğinin ilk değeri, karşılık gelen TypedArray prototip yerleşik nesnesidir (23.2.7 ).
Bu özellik { [[Writable]] : false, [[Enumerable]] : false, [[Configurable]] : false } özniteliklerine sahiptir.
# 23.2.7 TypedArray Prototip Nesnelerinin Özellikleri
Her TypedArray prototip nesnesi:
# 23.2.7.1 TypedArray .prototype.BYTES_PER_ELEMENT
TypedArray .prototype.BYTES_PER_ELEMENT değeri, Tablo 70 içinde TypedArray için belirtilen Eleman Boyutu (Element Size) değeridir.
Bu özellik { [[Writable]] : false, [[Enumerable]] : false, [[Configurable]] : false } özniteliklerine sahiptir.
# 23.2.7.2 TypedArray .prototype.constructor
Verilen bir TypedArray yapıcısının (constructor) prototipinin "constructor" özelliğinin ilk değeri yapıcının kendisidir.
# 23.2.8 TypedArray Örneklerinin Özellikleri
TypedArray örnekleri TypedArray nesneleridir (TypedArrays) . Her TypedArray örneği, karşılık gelen TypedArray prototip nesnesinden özellikleri miras alır. Her TypedArray örneği aşağıdaki dahili yuvalara sahiptir: [[ViewedArrayBuffer]] , [[TypedArrayName]] , [[ContentType]] , [[ByteLength]] , [[ByteOffset]] ve [[ArrayLength]] .
# 23.3 Uint8Array Nesneleri
Bir Uint8Array, yukarıda açıklandığı gibi belirli bir TypedArray türüdür. Ek olarak, Uint8Array yapıcısı (constructor) (23.3.1 ) ve Uint8Array prototip nesnesi (23.3.2 ) üzerinde ek metotlar bulunmaktadır.
# 23.3.1 Uint8Array Yapıcısının Ek Özellikleri
# 23.3.1.1 Uint8Array.fromBase64 ( string [ , options ] )
Eğer string bir Dize değilse (is not a String) , bir TypeError istisnası fırlat.
opts , ? GetOptionsObject (options ) olsun.
alphabet , ? Get (opts , "alphabet") olsun.
Eğer alphabet undefined ise, alphabet değerini "base64" olarak ayarla.
Eğer alphabet ne "base64" ne de "base64url" ise, bir TypeError istisnası fırlat.
lastChunkHandling , ? Get (opts , "lastChunkHandling") olsun.
Eğer lastChunkHandling undefined ise, lastChunkHandling değerini "loose" olarak ayarla.
Eğer lastChunkHandling ; "loose", "strict" veya "stop-before-partial" değerlerinden biri değilse, bir TypeError istisnası fırlat.
result , FromBase64 (string , alphabet , lastChunkHandling ) olsun.
Eğer result .[[Error]] değeri none değilse, o zaman
result .[[Error]] istisnasını fırlat.
resultLength , result .[[Bytes]] içindeki eleman sayısı olsun.
ta , ? AllocateTypedArray ("Uint8Array", %Uint8Array% , "%Uint8Array.prototype%", resultLength ) olsun.
Assert : ta .[[ViewedArrayBuffer]] .[[ArrayBufferByteLength]] değeri result .[[Bytes]] içindeki eleman sayısıdır.
ta .[[ViewedArrayBuffer]] .[[ArrayBufferData]] içindeki her bir dizindeki değeri, result .[[Bytes]] içindeki karşılık gelen dizindeki değer olarak ayarla.
ta döndür.
# 23.3.1.2 Uint8Array.fromHex ( string )
Eğer string bir Dize değilse (is not a String) , bir TypeError istisnası fırlat.
result , FromHex (string ) olsun.
Eğer result .[[Error]] değeri none değilse, o zaman
result .[[Error]] istisnasını fırlat.
resultLength , result .[[Bytes]] içindeki eleman sayısı olsun.
ta , ? AllocateTypedArray ("Uint8Array", %Uint8Array% , "%Uint8Array.prototype%", resultLength ) olsun.
Assert : ta .[[ViewedArrayBuffer]] .[[ArrayBufferByteLength]] değeri result .[[Bytes]] içindeki eleman sayısıdır.
ta .[[ViewedArrayBuffer]] .[[ArrayBufferData]] içindeki her bir dizindeki değeri, result .[[Bytes]] içindeki karşılık gelen dizindeki değer olarak ayarla.
ta döndür.
# 23.3.2 Uint8Array Prototip Nesnesinin Ek Özellikleri
# 23.3.2.1 Uint8Array.prototype.setFromBase64 ( string [ , options ] )
into , this değeri olsun.
? ValidateUint8Array (into ) işlemini gerçekleştir.
Eğer string bir Dize değilse (is not a String) , bir TypeError istisnası fırlat.
opts , ? GetOptionsObject (options ) olsun.
alphabet , ? Get (opts , "alphabet") olsun.
Eğer alphabet undefined ise, alphabet değerini "base64" olarak ayarla.
Eğer alphabet ne "base64" ne de "base64url" ise, bir TypeError istisnası fırlat.
lastChunkHandling , ? Get (opts , "lastChunkHandling") olsun.
Eğer lastChunkHandling undefined ise, lastChunkHandling değerini "loose" olarak ayarla.
Eğer lastChunkHandling ; "loose", "strict" veya "stop-before-partial" değerlerinden biri değilse, bir TypeError istisnası fırlat.
taRecord , MakeTypedArrayWithBufferWitnessRecord (into , seq-cst) olsun.
Eğer IsTypedArrayOutOfBounds (taRecord ) true ise, bir TypeError istisnası fırlat.
byteLength , TypedArrayLength (taRecord ) olsun.
result , FromBase64 (string , alphabet , lastChunkHandling , byteLength ) olsun.
bytes , result .[[Bytes]] olsun.
written , bytes içindeki eleman sayısı olsun.
NOTE : FromBase64 herhangi bir kullanıcı kodunu çağırmaz, bu nedenle into nesnesini destekleyen ArrayBuffer ayrılmış (detached) veya küçültülmüş olamaz.
Assert : written ≤ byteLength .
SetUint8ArrayBytes (into , bytes ) işlemini gerçekleştir.
Eğer result .[[Error]] değeri none değilse, o zaman
result .[[Error]] istisnasını fırlat.
resultObj , OrdinaryObjectCreate (%Object.prototype% ) olsun.
! CreateDataPropertyOrThrow (resultObj , "read", 𝔽 (result .[[Read]] )) işlemini gerçekleştir.
! CreateDataPropertyOrThrow (resultObj , "written", 𝔽 (written )) işlemini gerçekleştir.
resultObj döndür.
# 23.3.2.2 Uint8Array.prototype.setFromHex ( string )
into , this değeri olsun.
? ValidateUint8Array (into ) işlemini gerçekleştir.
Eğer string bir Dize değilse (is not a String) , bir TypeError istisnası fırlat.
taRecord , MakeTypedArrayWithBufferWitnessRecord (into , seq-cst) olsun.
Eğer IsTypedArrayOutOfBounds (taRecord ) true ise, bir TypeError istisnası fırlat.
byteLength , TypedArrayLength (taRecord ) olsun.
result , FromHex (string , byteLength ) olsun.
bytes , result .[[Bytes]] olsun.
written , bytes içindeki eleman sayısı olsun.
NOTE : FromHex herhangi bir kullanıcı kodunu çağırmaz, bu nedenle into nesnesini destekleyen ArrayBuffer ayrılmış (detached) veya küçültülmüş olamaz.
Assert : written ≤ byteLength .
SetUint8ArrayBytes (into , bytes ) işlemini gerçekleştir.
Eğer result .[[Error]] değeri none değilse, o zaman
result .[[Error]] istisnasını fırlat.
resultObj , OrdinaryObjectCreate (%Object.prototype% ) olsun.
! CreateDataPropertyOrThrow (resultObj , "read", 𝔽 (result .[[Read]] )) işlemini gerçekleştir.
! CreateDataPropertyOrThrow (resultObj , "written", 𝔽 (written )) işlemini gerçekleştir.
resultObj döndür.
# 23.3.2.3 Uint8Array.prototype.toBase64 ( [ options ] )
obj , this değeri olsun.
? ValidateUint8Array (obj ) işlemini gerçekleştir.
opts , ? GetOptionsObject (options ) olsun.
alphabet , ? Get (opts , "alphabet") olsun.
Eğer alphabet undefined ise, alphabet değerini "base64" olarak ayarla.
Eğer alphabet ne "base64" ne de "base64url" ise, bir TypeError istisnası fırlat.
omitPadding , ToBoolean (? Get (opts , "omitPadding")) olsun.
toEncode , ? GetUint8ArrayBytes (obj ) olsun.
Eğer alphabet "base64" ise, o zaman
outAscii , toEncode verisinin RFC 4648 'in 4. bölümünde belirtilen base64 kodlamasına göre kodlanmasıyla elde edilen kod noktaları dizisi olsun. Dolgu (padding), yalnızca ve ancak omitPadding false ise dahil edilir.
Değilse,
Assert : alphabet , "base64url" değeridir.
outAscii , toEncode verisinin RFC 4648 'in 5. bölümünde belirtilen base64url kodlamasına göre kodlanmasıyla elde edilen kod noktaları dizisi olsun. Dolgu (padding), yalnızca ve ancak omitPadding false ise dahil edilir.
CodePointsToString (outAscii ) döndür.
# 23.3.2.4 Uint8Array.prototype.toHex ( )
obj , this değeri olsun.
? ValidateUint8Array (obj ) işlemini gerçekleştir.
toEncode , ? GetUint8ArrayBytes (obj ) olsun.
out , boş Dize (String) olsun.
toEncode içindeki her byte baytı için, sırayla şunu yap:
hex , Number::toString (𝔽 (byte ), 16) olsun.
hex değerini StringPad (hex , 2, "0", start) olarak ayarla.
out değerini, out ve hex 'in dize birleşimi (string-concatenation) olarak ayarla.
out döndür.
# 23.3.3 Uint8Array Nesneleri İçin Soyut İşlemler
# 23.3.3.1 ValidateUint8Array ( ta )
ValidateUint8Array soyut işlemi, ta (bir ECMAScript dil değeri ) argümanını alır ve unused içeren bir olağan tamamlanma (normal completion containing) ya da bir fırlatma tamamlanması (throw completion) döndürür. Çağrıldığında aşağıdaki adımları gerçekleştirir:
? RequireInternalSlot (ta , [[TypedArrayName]] ) işlemini gerçekleştir.
Eğer ta .[[TypedArrayName]] "Uint8Array" değilse, bir TypeError istisnası fırlat.
unused döndür.
# 23.3.3.2 GetUint8ArrayBytes ( ta )
GetUint8ArrayBytes soyut işlemi, ta (bir Uint8Array) argümanını alır ve bayt değerleri Listesi (List) içeren bir olağan tamamlanma (normal completion containing) ya da bir fırlatma tamamlanması (throw completion) döndürür. Çağrıldığında aşağıdaki adımları gerçekleştirir:
buffer , ta .[[ViewedArrayBuffer]] olsun.
taRecord , MakeTypedArrayWithBufferWitnessRecord (ta , seq-cst) olsun.
Eğer IsTypedArrayOutOfBounds (taRecord ) true ise, bir TypeError istisnası fırlat.
length , TypedArrayLength (taRecord ) olsun.
byteOffset , ta .[[ByteOffset]] olsun.
bytes , yeni boş bir Liste (List) olsun.
index , 0 olsun.
index < length olduğu sürece tekrarla,
byteIndex , byteOffset + index olsun.
byte , ℝ (GetValueFromBuffer (buffer , byteIndex , uint8, true, unordered)) olsun.
byte değerini bytes listesine ekle.
index değerini index + 1 olarak ayarla.
bytes döndür.
# 23.3.3.3 SetUint8ArrayBytes ( into , bytes )
SetUint8ArrayBytes soyut işlemi, into (bir Uint8Array) ve bytes (bayt değerleri Listesi (List) ) argümanlarını alır ve unused döndürür. Çağrıldığında aşağıdaki adımları gerçekleştirir:
offset , into .[[ByteOffset]] olsun.
length , bytes içindeki eleman sayısı olsun.
index , 0 olsun.
index < length olduğu sürece tekrarla,
byte , bytes [index ] olsun.
byteIndexInBuffer , index + offset olsun.
SetValueInBuffer (into .[[ViewedArrayBuffer]] , byteIndexInBuffer , uint8, 𝔽 (byte ), true, unordered) işlemini gerçekleştir.
index değerini index + 1 olarak ayarla.
unused döndür.
# 23.3.3.4 SkipAsciiWhitespace ( string , index )
SkipAsciiWhitespace soyut işlemi, string (bir String) ve index (negatif olmayan bir tamsayı (integer) ) argümanlarını alır ve negatif olmayan bir tamsayı (integer) döndürür. Çağrıldığında aşağıdaki adımları gerçekleştirir:
length , string uzunluğu olsun.
index < length olduğu sürece tekrarla,
char , string içinde index dizinindeki kod birimi (code unit) olsun.
Eğer char ; 0x0009 (TAB), 0x000A (LF), 0x000C (FF), 0x000D (CR) veya 0x0020 (SPACE) değerlerinden biri değilse, o zaman
index döndür.
index değerini index + 1 olarak ayarla.
index döndür.
# 23.3.3.5 DecodeFinalBase64Chunk ( chunk , throwOnExtraBits )
DecodeFinalBase64Chunk soyut işlemi, chunk (uzunluğu 2 veya 3 olan bir String) ve throwOnExtraBits (bir Boolean) argümanlarını alır ve bayt değerleri Listesi (List) içeren bir olağan tamamlanma (normal completion containing) ya da bir fırlatma tamamlanması (throw completion) döndürür. Çağrıldığında aşağıdaki adımları gerçekleştirir:
chunkLength , chunk uzunluğu olsun.
Eğer chunkLength = 2 ise, o zaman
chunk değerini, chunk ve "AA"'nın dize birleşimi (string-concatenation) olarak ayarla.
Değilse,
Assert : chunkLength , 3'tür.
chunk değerini, chunk ve "A"'nın dize birleşimi (string-concatenation) olarak ayarla.
bytes , DecodeFullLengthBase64Chunk (chunk ) olsun.
Eğer chunkLength = 2 ise, o zaman
Eğer throwOnExtraBits true ise ve bytes [1] ≠ 0 ise, bir SyntaxError istisnası fırlat.
« bytes [0] » döndür.
Eğer throwOnExtraBits true ise ve bytes [2] ≠ 0 ise, bir SyntaxError istisnası fırlat.
« bytes [0], bytes [1] » döndür.
# 23.3.3.6 DecodeFullLengthBase64Chunk ( chunk )
DecodeFullLengthBase64Chunk soyut işlemi, chunk (uzunluğu 4 olan bir String) argümanını alır ve uzunluğu 3 olan bayt değerleri Listesi (List) döndürür.
Standart base64 alfabesi "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" şeklindedir, yani elemanları Unicode Basic Latin bloğundaki her harf ve sayıya karşılık gelen kod birimleri olan ve bunlara ek olarak "+" ve "/" karakterlerini içeren String'dir.
byteSequence , chunk kodunun base64 olarak çözülmesiyle (decoding) elde edilen benzersiz 3 baytlık dizi olsun (yani, byteSequence verisine RFC 4648 'in 4. bölümünde belirtilen base64 kodlamasının uygulanması chunk sonucunu üretecek şekildeki dizi).
Elemanları sırasıyla byteSequence elemanları olan bir Liste (List) döndür.
# 23.3.3.7 FromBase64 ( string , alphabet , lastChunkHandling [ , maxLength ] )
FromBase64 soyut işlemi, string (bir String), alphabet ("base64" veya "base64url") ve lastChunkHandling ("loose", "strict" veya "stop-before-partial") argümanlarını ve isteğe bağlı maxLength (negatif olmayan bir tamsayı (integer) ) argümanını alır ve [[Read]] (bir tamsayı (integer) ), [[Bytes]] (bayt değerleri Listesi (List) ) ve [[Error]] (bir SyntaxError nesnesi veya none) alanlarına sahip bir Kayıt (Record) döndürür. Çağrıldığında aşağıdaki adımları gerçekleştirir:
Eğer maxLength mevcut değilse, o zaman
maxLength değerini 253 - 1 olarak ayarla.
NOTE : Girdi bir Dize olduğundan (is a String) , Dizelerin (Strings) uzunluğu 253 - 1 karakter ile sınırlıdır ve çıktı girdi karakterlerinden daha fazla bayt gerektirmediğinden, bu sınıra asla ulaşılamaz. Ancak maxLength için sonlu (finite) bir değer kullanmak editöryal açıdan kolaylık sağlar.
NOTE : Aşağıdaki algoritmada doğrulama ve kod çözme sırası gözlemlenebilir değildir. Uygulamaların bunları en verimli olan herhangi bir sırada gerçekleştirmesi, muhtemelen doğrulama ile kod çözme işlemlerini iç içe yürütmesi teşvik edilir.
Eğer maxLength = 0 ise, o zaman
{ [[Read]] : 0, [[Bytes]] : « », [[Error]] : none } Kaydını (Record) döndür.
read , 0 olsun.
bytes , yeni boş bir Liste (List) olsun.
chunk , boş Dize (String) olsun.
chunkLength , 0 olsun.
index , 0 olsun.
length , string uzunluğu olsun.
Tekrarla,
Assert : bytes listesindeki eleman sayısı 3 ile kalansız bölünebilir.
index değerini SkipAsciiWhitespace (string , index ) olarak ayarla.
Eğer index = length ise, o zaman
Eğer chunkLength > 0 ise, o zaman
1. Eğer *lastChunkHandling* `"stop-before-partial"` ise, o zaman
1. { *[[Read]]*: *read*, *[[Bytes]]*: *bytes*, *[[Error]]*: `none` } [Kaydını (Record)](07_sec-ecmascript-data-types-and-values.md#sec-list-and-record-specification-type) döndür.
2. Eğer *lastChunkHandling* `"strict"` ise, o zaman
1. *error*, yeni oluşturulmuş bir `SyntaxError` nesnesi olsun.
2. { *[[Read]]*: *read*, *[[Bytes]]*: *bytes*, *[[Error]]*: *error* } [Kaydını (Record)](07_sec-ecmascript-data-types-and-values.md#sec-list-and-record-specification-type) döndür.
3. [Assert](06_sec-notational-conventions.md#assert): *lastChunkHandling*, `"loose"` değeridir.
4. Eğer *chunkLength* = 1 ise, o zaman
1. *error*, yeni oluşturulmuş bir `SyntaxError` nesnesi olsun.
2. { *[[Read]]*: *read*, *[[Bytes]]*: *bytes*, *[[Error]]*: *error* } [Kaydını (Record)](07_sec-ecmascript-data-types-and-values.md#sec-list-and-record-specification-type) döndür.
5. *bytes* değerini, *bytes* ve ! [DecodeFinalBase64Chunk](#sec-decodefinalbase64chunk)(*chunk*, `false`) listelerinin [liste birleşimi (list-concatenation)](07_sec-ecmascript-data-types-and-values.md#list-concatenation) olarak ayarla.
{ [[Read]] : length , [[Bytes]] : bytes , [[Error]] : none } Kaydını (Record) döndür.
char , string içindeki index dizininden index + 1 dizinine kadar olan alt dize (substring) olsun.
index değerini index + 1 olarak ayarla.
Eğer char "=" ise, o zaman
Eğer chunkLength < 2 ise, o zaman
1. *error*, yeni oluşturulmuş bir `SyntaxError` nesnesi olsun.
2. { *[[Read]]*: *read*, *[[Bytes]]*: *bytes*, *[[Error]]*: *error* } [Kaydını (Record)](07_sec-ecmascript-data-types-and-values.md#sec-list-and-record-specification-type) döndür.
index değerini SkipAsciiWhitespace (string , index ) olarak ayarla.
Eğer chunkLength = 2 ise, o zaman
1. Eğer *index* = *length* ise, o zaman
1. Eğer *lastChunkHandling* `"stop-before-partial"` ise, o zaman
1. { *[[Read]]*: *read*, *[[Bytes]]*: *bytes*, *[[Error]]*: `none` } [Kaydını (Record)](07_sec-ecmascript-data-types-and-values.md#sec-list-and-record-specification-type) döndür.
2. *error*, yeni oluşturulmuş bir `SyntaxError` nesnesi olsun.
3. { *[[Read]]*: *read*, *[[Bytes]]*: *bytes*, *[[Error]]*: *error* } [Kaydını (Record)](07_sec-ecmascript-data-types-and-values.md#sec-list-and-record-specification-type) döndür.
2. *char*, *string* içindeki *index* dizininden *index* + 1 dizinine kadar olan [alt dize (substring)](07_sec-ecmascript-data-types-and-values.md#substring) olsun.
3. Eğer *char* `"="` ise, o zaman
1. *index* değerini [SkipAsciiWhitespace](#sec-skipasciiwhitespace)(*string*, *index + 1*) olarak ayarla.
Eğer index < length ise, o zaman
1. *error*, yeni oluşturulmuş bir `SyntaxError` nesnesi olsun.
2. { *[[Read]]*: *read*, *[[Bytes]]*: *bytes*, *[[Error]]*: *error* } [Kaydını (Record)](07_sec-ecmascript-data-types-and-values.md#sec-list-and-record-specification-type) döndür.
Eğer lastChunkHandling "strict" ise, throwOnExtraBits true olsun; değilse throwOnExtraBits false olsun.
decodeResult , Completion (DecodeFinalBase64Chunk (chunk , throwOnExtraBits )) olsun.
Eğer decodeResult bir ani sonlanma (abrupt completion) ise, o zaman
1. *error*, *decodeResult*.*[[Value]]* olsun.
2. { *[[Read]]*: *read*, *[[Bytes]]*: *bytes*, *[[Error]]*: *error* } [Kaydını (Record)](07_sec-ecmascript-data-types-and-values.md#sec-list-and-record-specification-type) döndür.
bytes değerini, bytes ve ! decodeResult listelerinin liste birleşimi (list-concatenation) olarak ayarla.
{ [[Read]] : length , [[Bytes]] : bytes , [[Error]] : none } Kaydını (Record) döndür.
Eğer alphabet "base64url" ise, o zaman
Eğer char ; "+" veya "/" değerlerinden biriyse, o zaman
1. *error*, yeni oluşturulmuş bir `SyntaxError` nesnesi olsun.
2. { *[[Read]]*: *read*, *[[Bytes]]*: *bytes*, *[[Error]]*: *error* } [Kaydını (Record)](07_sec-ecmascript-data-types-and-values.md#sec-list-and-record-specification-type) döndür.
Değilse eğer char "-" ise, o zaman
1. *char* değerini `"+"` olarak ayarla.
Değilse eğer char "_" ise, o zaman
1. *char* değerini `"/"` olarak ayarla.
Eğer char 'ın yegane kod birimi standart base64 alfabesinin (standard base64 alphabet) bir elemanı değilse, o zaman
error , yeni oluşturulmuş bir SyntaxError nesnesi olsun.
{ [[Read]] : read , [[Bytes]] : bytes , [[Error]] : error } Kaydını (Record) döndür.
remaining , maxLength - bytes listesindeki eleman sayısı olsun.
Eğer remaining = 1 ve chunkLength = 2 ise, veya remaining = 2 ve chunkLength = 3 ise, o zaman
{ [[Read]] : read , [[Bytes]] : bytes , [[Error]] : none } Kaydını (Record) döndür.
chunk değerini, chunk ve char 'ın dize birleşimi (string-concatenation) olarak ayarla.
chunkLength , chunk uzunluğu olsun.
Eğer chunkLength = 4 ise, o zaman
bytes değerini, bytes ve DecodeFullLengthBase64Chunk (chunk ) listelerinin liste birleşimi (list-concatenation) olarak ayarla.
chunk değerini boş Dize (String) olarak ayarla.
chunkLength değerini 0 olarak ayarla.
read , index olsun.
Eğer bytes listesindeki eleman sayısı = maxLength ise, o zaman
1. { *[[Read]]*: *read*, *[[Bytes]]*: *bytes*, *[[Error]]*: `none` } [Kaydını (Record)](07_sec-ecmascript-data-types-and-values.md#sec-list-and-record-specification-type) döndür.
# 23.3.3.8 FromHex ( string [ , maxLength ] )
FromHex soyut işlemi, string (bir String) argümanını ve isteğe bağlı maxLength (negatif olmayan bir tamsayı (integer) ) argümanını alır ve [[Read]] (bir tamsayı (integer) ), [[Bytes]] (bayt değerleri Listesi (List) ) ve [[Error]] (bir SyntaxError nesnesi veya none) alanlarına sahip bir Kayıt (Record) döndürür. Çağrıldığında aşağıdaki adımları gerçekleştirir:
Eğer maxLength mevcut değilse, maxLength değerini 253 - 1 olarak ayarla.
length , string uzunluğu olsun.
bytes , yeni boş bir Liste (List) olsun.
read , 0 olsun.
Eğer length modulo 2 ≠ 0 ise, o zaman
error , yeni oluşturulmuş bir SyntaxError nesnesi olsun.
{ [[Read]] : read , [[Bytes]] : bytes , [[Error]] : error } Kaydını (Record) döndür.
read < length olduğu ve bytes listesindeki eleman sayısı < maxLength olduğu sürece tekrarla,
hexits , string içindeki read dizininden read + 2 dizinine kadar olan alt dize (substring) olsun.
Eğer hexits , "0123456789abcdefABCDEF" içinde olmayan herhangi bir kod birimini içeriyorsa, o zaman
error , yeni oluşturulmuş bir SyntaxError nesnesi olsun.
{ [[Read]] : read , [[Bytes]] : bytes , [[Error]] : error } Kaydını (Record) döndür.
read değerini read + 2 olarak ayarla.
byte , hexits tarafından 16 tabanındaki gösterimle temsil edilen tamsayı (integer) değeri olsun; bu gösterimde 10 ile 15 değerlerindeki basamaklar için sırasıyla A ile F ve a ile f harfleri kullanılır.
byte değerini bytes listesine ekle.
{ [[Read]] : read , [[Bytes]] : bytes , [[Error]] : none } Kaydını (Record) döndür.
← önceki 22 Metin İşleme (Text Processing)
sonraki → 24 Anahtarlı Koleksiyonlar (Keyed Collections)