Metin İşleme (Text Processing)
22.1 String (Dizgi) Nesneleri (String Objects)
22.1.1 String Yapıcısı (The String Constructor)
String yapıcısı (constructor):
%String% nesnesidir.
global nesnenin (global object)
"String"özelliğinin başlangıç değeridir.bir yapıcı (constructor) olarak çağrıldığında yeni bir String nesnesi oluşturur ve başlatır.
bir yapıcı (constructor) yerine bir işlev olarak çağrıldığında tür dönüştürme gerçekleştirir.
bir sınıf tanımının
extendstümcesinin değeri olarak kullanılabilir. Belirtilen String davranışını miras almayı amaçlayan alt sınıf yapıcıları (constructors), alt sınıf örneğini bir [[StringData]] dahili yuvası (internal slot) ile oluşturmak ve başlatmak için String yapıcısına (constructor) yapılacak birsuperçağrısı içermelidir.
22.1.1.1 String ( value )
Bu işlev çağrıldığında aşağıdaki adımları gerçekleştirir:
Eğer value mevcut değilse, o halde
- string, boş Dizgi (empty String) olsun.
Değilse,
Eğer NewTarget
undefinedise ve value bir Sembol ise (is a Symbol), SymbolDescriptiveString(value) sonucunu döndür.string, ? ToString(value) olsun.
Eğer NewTarget
undefinedise, string döndür.StringCreate(string, ? GetPrototypeFromConstructor(NewTarget,
"%String.prototype%")) sonucunu döndür.
22.1.2 String Yapıcısının Özellikleri (Properties of the String Constructor)
String yapıcısı (constructor):
değeri %Function.prototype% olan bir [[Prototype]] dahili yuvasına (internal slot) sahiptir.
aşağıdaki özelliklere sahiptir:
22.1.2.1 String.fromCharCode ( ...codeUnits )
Bu işlev, artık parametre (rest parameter) codeUnits'ı oluşturan herhangi bir sayıda argümanla çağrılabilir.
Çağrıldığında aşağıdaki adımları gerçekleştirir:
result, boş Dizgi olsun.
codeUnits listesinin her bir next öğesi için sırasıyla şunları yap:
nextCU, sayısal değeri ℝ(? ToUint16(next)) olan kod birimi (code unit) olsun.
result değerini, result ile nextCU değerlerinin dizgi birleşimi (string-concatenation) olarak ayarla.
result döndür.
Bu işlevin "length" özelliği 1𝔽'dir.
22.1.2.2 String.fromCodePoint ( ...codePoints )
Bu işlev, artık parametre (rest parameter) codePoints'ı oluşturan herhangi bir sayıda argümanla çağrılabilir.
Çağrıldığında aşağıdaki adımları gerçekleştirir:
result, boş Dizgi olsun.
codePoints listesinin her bir next öğesi için sırasıyla şunları yap:
nextCP, ? ToNumber(next) olsun.
Eğer nextCP bir tam sayı Sayı (integral Number) değilse, bir
RangeErroristisnası fırlat.Eğer ℝ(nextCP) < 0 veya ℝ(nextCP) > 0x10FFFF ise, bir
RangeErroristisnası fırlat.result değerini, result ile UTF16EncodeCodePoint(ℝ(nextCP)) değerlerinin dizgi birleşimi (string-concatenation) olarak ayarla.
İddia et (Assert): Eğer codePoints boşsa, o halde result boş Dizgidir.
result döndür.
Bu işlevin "length" özelliği 1𝔽'dir.
22.1.2.3 String.prototype
String.prototype özelliğinin başlangıç değeri String prototip nesnesidir (String prototype object).
Bu özellik { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false } özniteliklerine sahiptir.
22.1.2.4 String.raw ( template, ...substitutions )
Bu işlev, değişken sayıda argümanla çağrılabilir. İlk argüman template olup argümanlerin geri kalanı substitutions Listesini (List) oluşturur.
Çağrıldığında aşağıdaki adımları gerçekleştirir:
substitutionCount, substitutions içindeki öğelerin sayısı olsun.
cooked, ? ToObject(template) olsun.
literalCount, ? LengthOfArrayLike(literals) olsun.
Eğer literalCount ≤ 0 ise, boş Dizgi döndür.
result, boş Dizgi olsun.
nextIndex be 0.
Tekrarla:
nextLiteralValue, ? Get(literals, ! ToString(𝔽(nextIndex))) olsun.
nextLiteral, ? ToString(nextLiteralValue) olsun.
result değerini, result ile nextLiteral değerlerinin dizgi birleşimi (string-concatenation) olarak ayarla.
Eğer nextIndex + 1 = literalCount ise, result döndür.
Eğer nextIndex < substitutionCount ise, o halde
nextSubValue, substitutions[nextIndex] olsun.
nextSub, ? ToString(nextSubValue) olsun.
result değerini, result ile nextSub değerlerinin dizgi birleşimi (string-concatenation) olarak ayarla.
nextIndex değerini nextIndex + 1 olarak ayarla.