Function.prototype.bind kullanılarak oluşturulan veya (GeneratorMethod veya AsyncGeneratorMethod olmayan) bir MethodDefinition ya da bir ArrowFunction değerlendirilerek oluşturulan işlev nesneleri (function objects) bir "prototype" özelliğine sahip değildir.
# 20.2.5 HostHasSourceTextAvailable ( func )
Barındırıcı tarafından tanımlanmış (host-defined) soyut işlem HostHasSourceTextAvailable; func (bir işlev nesnesi (function object) ) argümanını alır ve bir Boole döndürür. Barındırıcı ortamların (host environments) , func için kaynak metnin sağlanmasını engellemesine olanak tanır.
HostHasSourceTextAvailable gerçekleştirimi aşağıdaki gereksinimlere uymalıdır:
Parametrelerine göre belirleyici (deterministic) olmalıdır. Argüman olarak belirli bir func ile her çağrıldığında aynı sonucu döndürmelidir.
HostHasSourceTextAvailable soyut işleminin varsayılan gerçekleştirimi true döndürmektir.
# 20.3 Mantıksal Değer (Boolean) Nesneleri (Boolean Objects)
# 20.3.1 Boolean Yapıcısı (The Boolean Constructor)
Boolean yapıcısı (constructor) :
%Boolean% nesnesidir.
global nesnenin (global object) "Boolean" özelliğinin başlangıç değeridir.
bir yapıcı (constructor) olarak çağrıldığında yeni bir Boolean nesnesi oluşturur ve başlatır.
bir yapıcı (constructor) olarak değil de bir işlev olarak çağrıldığında bir tür dönüşümü gerçekleştirir.
bir sınıf tanımının extends tümcesinin değeri olarak kullanılabilir. Belirtilen Boolean davranışını miras almayı amaçlayan alt sınıf yapıcıları (constructors) , alt sınıf örneğini bir [[BooleanData]] dahili yuvası (internal slot) ile oluşturmak ve başlatmak için Boolean yapıcısına (constructor) bir super çağrısı içermelidir.
# 20.3.1.1 Boolean ( value )
Bu işlev, çağrıldığında aşağıdaki adımları gerçekleştirir:
bool , ToBoolean (value ) olsun.
Eğer NewTarget undefined ise, bool döndür.
obj , ? OrdinaryCreateFromConstructor (NewTarget, "%Boolean.prototype%", « [[BooleanData]] ») olsun.
obj .[[BooleanData]] değerini bool olarak ayarla.
obj döndür.
# 20.3.2 Boolean Yapıcısının Özellikleri (Properties of the Boolean Constructor)
Boolean yapıcısı (constructor) :
# 20.3.2.1 Boolean.prototype
Boolean.prototype özelliğinin başlangıç değeri Boolean prototip nesnesidir (Boolean prototype object) .
Bu özellik { [[Writable]] : false, [[Enumerable]] : false, [[Configurable]] : false } özniteliklerine sahiptir.
# 20.3.3 Boolean Prototip Nesnesinin Özellikleri (Properties of the Boolean Prototype Object)
Boolean prototip nesnesi:
%Boolean.prototype% nesnesidir.
bir sıradan nesnedir (ordinary object) .
kendisi de bir Boolean nesnesidir; değeri false olan bir [[BooleanData]] dahili yuvasına (internal slot) sahiptir.
değeri %Object.prototype% olan bir [[Prototype]] dahili yuvasına (internal slot) sahiptir.
# 20.3.3.1 Boolean.prototype.constructor
Boolean.prototype.constructor özelliğinin başlangıç değeri %Boolean% nesnesidir.
# 20.3.3.2 Boolean.prototype.toString ( )
Bu yöntem, çağrıldığında aşağıdaki adımları gerçekleştirir:
bool , ? ThisBooleanValue (this değeri) olsun.
Eğer bool true ise, "true" döndür.
"false" döndür.
# 20.3.3.3 Boolean.prototype.valueOf ( )
Bu yöntem, çağrıldığında aşağıdaki adımları gerçekleştirir:
? ThisBooleanValue (this değeri) döndür.
# 20.3.3.3.1 ThisBooleanValue ( arg )
Soyut işlem ThisBooleanValue; arg (bir ECMAScript dil değeri (ECMAScript language value) ) argümanını alır ve bir Boolean içeren bir normal tamamlanma (normal completion) ya da bir fırlatma tamamlanması (throw completion) döndürür. Çağrıldığında aşağıdaki adımları gerçekleştirir:
Eğer arg bir Boolean ise (is a Boolean) , arg döndür.
Eğer arg bir Nesne ise (is an Object) ve arg bir [[BooleanData]] dahili yuvasına (internal slot) sahipse, o halde
bool , arg .[[BooleanData]] olsun.
Assert : bool bir Boolean'dır (is a Boolean) .
bool döndür.
Bir TypeError istisnası fırlat.
# 20.3.4 Boolean Örneklerinin Özellikleri (Properties of Boolean Instances)
Boolean örnekleri, Boolean prototip nesnesinden (Boolean prototype object) özellikler miras alan sıradan nesnelerdir (ordinary objects) . Boolean örnekleri bir [[BooleanData]] dahili yuvasına (internal slot) sahiptir. [[BooleanData]] dahili yuvası, bu Boolean nesnesi tarafından temsil edilen Boolean değeridir.
# 20.4 Simge (Symbol) Nesneleri (Symbol Objects)
# 20.4.1 Symbol Yapıcısı (The Symbol Constructor)
Symbol yapıcısı (constructor) :
%Symbol% nesnesidir.
global nesnenin (global object) "Symbol" özelliğinin başlangıç değeridir.
bir işlev olarak çağrıldığında yeni bir Symbol değeri döndürür.
new işleci ile kullanılmak üzere tasarlanmamıştır.
alt sınıflara ayrılmak (subclass) üzere tasarlanmamıştır.
bir sınıf tanımının extends tümcesinin değeri olarak kullanılabilir ama ona yapılacak bir super çağrısı istisnaya neden olur.
# 20.4.1.1 Symbol ( [ description ] )
Bu işlev, çağrıldığında aşağıdaki adımları gerçekleştirir:
Eğer NewTarget undefined değilse, bir TypeError istisnası fırlat.
Eğer description undefined ise, descString undefined olsun.
Değilse, descString , ? ToString (description ) olsun.
[[Description]] değeri descString olan yeni bir Symbol döndür.
# 20.4.2 Symbol Yapıcısının Özellikleri (Properties of the Symbol Constructor)
Symbol yapıcısı (constructor) :
# 20.4.2.1 Symbol.asyncIterator
Symbol.asyncIterator özelliğinin başlangıç değeri, tanınmış simge %Symbol.asyncIterator% nesnesidir (Tablo 1 ).
Bu özellik { [[Writable]] : false, [[Enumerable]] : false, [[Configurable]] : false } özniteliklerine sahiptir.
# 20.4.2.2 Symbol.for ( key )
Bu işlev, çağrıldığında aşağıdaki adımları gerçekleştirir:
stringKey , ? ToString (key ) olsun.
GlobalSymbolRegistry Listesindeki (GlobalSymbolRegistry List) her bir element öğesi için sırayla şunları yap:
Eğer element .[[Key]] değeri stringKey ise, element .[[Symbol]] döndür.
Assert : GlobalSymbolRegistry Listesi (GlobalSymbolRegistry List) şu anda stringKey için any bir girdi içermemektedir.
newSymbol , [[Description]] değeri stringKey olan yeni bir Symbol olsun.
{ [[Key]] : stringKey , [[Symbol]] : newSymbol } GlobalSymbolRegistry Kaydını (Record) , GlobalSymbolRegistry Listesine (GlobalSymbolRegistry List) ekle.
newSymbol döndür.
GlobalSymbolRegistry Listesi (GlobalSymbolRegistry List), global olarak kullanılabilen ve yalnızca sonuna ekleme yapılabilen (append-only) bir Listendir (List) . Tüm bölgeler (realms) tarafından paylaşılır. Herhangi bir ECMAScript kodunun değerlendirilmesinden önce, yeni ve boş bir Liste (List) olarak başlatılır. GlobalSymbolRegistry Listesi (GlobalSymbolRegistry List) öğeleri, yapısı Tablo 58 içinde tanımlanan Kaydelardır (Records) .
Tablo 58: GlobalSymbolRegistry Kaydı (Record) Alanları
Alan Adı
Değer
Kullanım
[[Key]]
bir Dize
Bir Symbol'ü küresel olarak tanımlamak için kullanılan dize anahtarı.
[[Symbol]]
bir Simge
Herhangi bir bölgeden (realm) geri alınabilen simge.
# 20.4.2.3 Symbol.hasInstance
Symbol.hasInstance özelliğinin başlangıç değeri, tanınmış simge %Symbol.hasInstance% nesnesidir (Tablo 1 ).
Bu özellik { [[Writable]] : false, [[Enumerable]] : false, [[Configurable]] : false } özniteliklerine sahiptir.
# 20.4.2.4 Symbol.isConcatSpreadable
Symbol.isConcatSpreadable özelliğinin başlangıç değeri, tanınmış simge %Symbol.isConcatSpreadable% nesnesidir (Tablo 1 ).
Bu özellik { [[Writable]] : false, [[Enumerable]] : false, [[Configurable]] : false } özniteliklerine sahiptir.
# 20.4.2.5 Symbol.iterator
Symbol.iterator özelliğinin başlangıç değeri, tanınmış simge %Symbol.iterator% nesnesidir (Tablo 1 ).
Bu özellik { [[Writable]] : false, [[Enumerable]] : false, [[Configurable]] : false } özniteliklerine sahiptir.
# 20.4.2.6 Symbol.keyFor ( symbol )
Bu işlev, çağrıldığında aşağıdaki adımları gerçekleştirir:
Eğer symbol bir Simge değilse (is not a Symbol) , bir TypeError istisnası fırlat.
KeyForSymbol (symbol ) döndür.
# 20.4.2.7 Symbol.match
Symbol.match özelliğinin başlangıç değeri, tanınmış simge %Symbol.match% nesnesidir (Tablo 1 ).
Bu özellik { [[Writable]] : false, [[Enumerable]] : false, [[Configurable]] : false } özniteliklerine sahiptir.
# 20.4.2.8 Symbol.matchAll
Symbol.matchAll özelliğinin başlangıç değeri, tanınmış simge %Symbol.matchAll% nesnesidir (Tablo 1 ).
Bu özellik { [[Writable]] : false, [[Enumerable]] : false, [[Configurable]] : false } özniteliklerine sahiptir.
# 20.4.2.9 Symbol.prototype
Symbol.prototype özelliğinin başlangıç değeri Symbol prototip nesnesidir (Symbol prototype object) .
Bu özellik { [[Writable]] : false, [[Enumerable]] : false, [[Configurable]] : false } özniteliklerine sahiptir.
# 20.4.2.10 Symbol.replace
Symbol.replace özelliğinin başlangıç değeri, tanınmış simge %Symbol.replace% nesnesidir (Tablo 1 ).
Bu özellik { [[Writable]] : false, [[Enumerable]] : false, [[Configurable]] : false } özniteliklerine sahiptir.
# 20.4.2.11 Symbol.search
Symbol.search özelliğinin başlangıç değeri, tanınmış simge %Symbol.search% nesnesidir (Tablo 1 ).
Bu özellik { [[Writable]] : false, [[Enumerable]] : false, [[Configurable]] : false } özniteliklerine sahiptir.
# 20.4.2.12 Symbol.species
Symbol.species özelliğinin başlangıç değeri, tanınmış simge %Symbol.species% nesnesidir (Tablo 1 ).
Bu özellik { [[Writable]] : false, [[Enumerable]] : false, [[Configurable]] : false } özniteliklerine sahiptir.
# 20.4.2.13 Symbol.split
Symbol.split özelliğinin başlangıç değeri, tanınmış simge %Symbol.split% nesnesidir (Tablo 1 ).
Bu özellik { [[Writable]] : false, [[Enumerable]] : false, [[Configurable]] : false } özniteliklerine sahiptir.
# 20.4.2.14 Symbol.toPrimitive
Symbol.toPrimitive özelliğinin başlangıç değeri, tanınmış simge %Symbol.toPrimitive% nesnesidir (Tablo 1 ).
Bu özellik { [[Writable]] : false, [[Enumerable]] : false, [[Configurable]] : false } özniteliklerine sahiptir.
# 20.4.2.15 Symbol.toStringTag
Symbol.toStringTag özelliğinin başlangıç değeri, tanınmış simge %Symbol.toStringTag% nesnesidir (Tablo 1 ).
Bu özellik { [[Writable]] : false, [[Enumerable]] : false, [[Configurable]] : false } özniteliklerine sahiptir.
# 20.4.2.16 Symbol.unscopables
Symbol.unscopables özelliğinin başlangıç değeri, tanınmış simge %Symbol.unscopables% nesnesidir (Tablo 1 ).
Bu özellik { [[Writable]] : false, [[Enumerable]] : false, [[Configurable]] : false } özniteliklerine sahiptir.
# 20.4.3 Symbol Prototip Nesnesinin Özellikleri (Properties of the Symbol Prototype Object)
Symbol prototip nesnesi:
# 20.4.3.1 Symbol.prototype.constructor
Symbol.prototype.constructor özelliğinin başlangıç değeri %Symbol% nesnesidir.
# 20.4.3.2 get Symbol.prototype.description
Symbol.prototype.description, set erişici işlevi (set accessor function) undefined olan bir erişici özelliktir (accessor property) . get erişici işlevi çağrıldığında aşağıdaki adımları gerçekleştirir:
symbol , ? ThisSymbolValue (this değeri) olsun.
symbol .[[Description]] değerini döndür.
# 20.4.3.3 Symbol.prototype.toString ( )
Bu yöntem, çağrıldığında aşağıdaki adımları gerçekleştirir:
symbol , ? ThisSymbolValue (this değeri) olsun.
SymbolDescriptiveString (symbol ) döndür.
# 20.4.3.3.1 SymbolDescriptiveString ( symbol )
Soyut işlem SymbolDescriptiveString; symbol (bir Symbol) argümanını alır ve bir Dize döndürür. Çağrıldığında aşağıdaki adımları gerçekleştirir:
propertyDesc , symbol .[[Description]] olsun.
Eğer propertyDesc undefined ise, propertyDesc değerini boş Dize olarak ayarla.
Assert : propertyDesc bir Dizedir (is a String) .
"Symbol(", propertyDesc ve ")" değerlerinin dize birleşimini (string-concatenation) döndür.
# 20.4.3.4 Symbol.prototype.valueOf ( )
Bu yöntem, çağrıldığında aşağıdaki adımları gerçekleştirir:
? ThisSymbolValue (this değeri) döndür.
# 20.4.3.4.1 ThisSymbolValue ( arg )
Soyut işlem ThisSymbolValue; arg (bir ECMAScript dil değeri (ECMAScript language value) ) argümanını alır ve bir Simge içeren bir normal tamamlanma (normal completion) ya da bir fırlatma tamamlanması (throw completion) döndürür. Çağrıldığında aşağıdaki adımları gerçekleştirir:
Eğer arg bir Simge ise (is a Symbol) , arg döndür.
Eğer arg bir Nesne ise (is an Object) ve arg bir [[SymbolData]] dahili yuvasına (internal slot) sahipse, o halde
symbol , arg .[[SymbolData]] olsun.
Assert : symbol bir Simgedir (is a Symbol) .
symbol döndür.
Bir TypeError istisnası fırlat.
# 20.4.3.5 Symbol.prototype [ %Symbol.toPrimitive% ] ( hint )
Bu yöntem, bir Symbol nesnesini ilkel bir değere (primitive value) dönüştürmek için ECMAScript dil işleçleri (language operators) tarafından çağrılır.
Çağrıldığında aşağıdaki adımları gerçekleştirir:
? ThisSymbolValue (this değeri) döndür.
NOT
Argüman yoksayılır.
Bu özellik { [[Writable]] : false, [[Enumerable]] : false, [[Configurable]] : true } özniteliklerine sahiptir.
Bu yöntemin "name" özelliğinin değeri "[Symbol.toPrimitive]" dizisidir.
# 20.4.3.6 Symbol.prototype [ %Symbol.toStringTag% ]
%Symbol.toStringTag% özelliğinin başlangıç değeri "Symbol" Dize değeridir.
Bu özellik { [[Writable]] : false, [[Enumerable]] : false, [[Configurable]] : true } özniteliklerine sahiptir.
# 20.4.4 Symbol Örneklerinin Özellikleri (Properties of Symbol Instances)
Symbol örnekleri, Symbol prototip nesnesinden (Symbol prototype object) özellikler miras alan sıradan nesnelerdir (ordinary objects) . Symbol örnekleri bir [[SymbolData]] dahili yuvasına (internal slot) sahiptir. [[SymbolData]] dahili yuvası, bu Symbol nesnesi tarafından temsil edilen Symbol değeridir.
# 20.4.5 Simgeler için Soyut İşlemler (Abstract Operations for Symbols)
# 20.4.5.1 KeyForSymbol ( symbol )
Soyut işlem KeyForSymbol; symbol (bir Symbol) argümanını alır ve bir Dize ya da undefined döndürür. Eğer symbol , GlobalSymbolRegistry Listesi (GlobalSymbolRegistry List) içindeyse, symbol 'ü kaydetmek için kullanılan Dize döndürülür. Çağrıldığında aşağıdaki adımları gerçekleştirir:
GlobalSymbolRegistry Listesindeki (GlobalSymbolRegistry List) her bir element öğesi için sırayla şunları yap:
Eğer SameValue (element .[[Symbol]] , symbol ) değeri true ise, element .[[Key]] döndür.
Assert : GlobalSymbolRegistry Listesi (GlobalSymbolRegistry List) şu anda symbol için herhangi bir girdi içermemektedir.
undefined döndür.
# 20.5 Hata (Error) Nesneleri (Error Objects)
Çalışma zamanı hataları (runtime errors) oluştuğunda Error nesnelerinin örnekleri istisna olarak fırlatılır. Error nesneleri, kullanıcı tanımlı istisna sınıfları için temel (base) nesneler olarak da hizmet edebilir.
Bir ECMAScript uygulaması çalışma zamanı hatası algıladığında, 20.5.5 içinde tanımlanan NativeError nesnelerinden birinin yeni bir örneğini veya 20.5.7 içinde tanımlanan AggregateError nesnesinin yeni bir örneğini fırlatır.
# 20.5.1 Error Yapıcısı (The Error Constructor)
Error yapıcısı (constructor) :
%Error% nesnesidir.
global nesnenin (global object) "Error" özelliğinin başlangıç değeridir.
bir yapıcı (constructor) yerine bir işlev olarak çağrıldığında yeni bir Error nesnesi oluşturur ve başlatır. Bu nedenle Error(…) işlev çağrısı, aynı argümanlarla yapılan new Error(…) nesne oluşturma ifadesine eşdeğerdir.
bir sınıf tanımının extends tümcesinin değeri olarak kullanılabilir. Belirtilen Error davranışını miras almayı amaçlayan alt sınıf yapıcıları (constructors) , alt sınıf örneklerini bir [[ErrorData]] dahili yuvası (internal slot) ile oluşturmak ve başlatmak için Error yapıcısına (constructor) yapılacak bir super çağrısı içermelidir.
# 20.5.1.1 Error ( message [ , options ] )
Bu işlev, çağrıldığında aşağıdaki adımları gerçekleştirir:
Eğer NewTarget undefined ise, newTarget etkin işlev nesnesi (active function object) olsun; değilse newTarget NewTarget olsun.
obj , ? OrdinaryCreateFromConstructor (newTarget , "%Error.prototype%", « [[ErrorData]] ») olsun.
Eğer message undefined değilse, o halde
messageString , ? ToString (message ) olsun.
CreateNonEnumerableDataPropertyOrThrow (obj , "message", messageString ) işlemini gerçekleştir.
? InstallErrorCause (obj , options ) işlemini gerçekleştir.
obj döndür.
# 20.5.2 Error Yapıcısının Özellikleri (Properties of the Error Constructor)
Error yapıcısı (constructor) :
# 20.5.2.1 Error.isError ( arg )
Bu işlev, çağrıldığında aşağıdaki adımları gerçekleştirir:
Eğer arg bir Nesne değilse (is not an Object) , false döndür.
Eğer arg bir [[ErrorData]] dahili yuvasına (internal slot) sahip değilse, false döndür.
true döndür.
# 20.5.2.2 Error.prototype
Error.prototype özelliğinin başlangıç değeri Error prototip nesnesidir (Error prototype object) .
Bu özellik { [[Writable]] : false, [[Enumerable]] : false, [[Configurable]] : false } özniteliklerine sahiptir.
# 20.5.3 Error Prototip Nesnesinin Özellikleri (Properties of the Error Prototype Object)
Error prototip nesnesi:
# 20.5.3.1 Error.prototype.constructor
Error.prototype.constructor özelliğinin başlangıç değeri %Error% nesnesidir.
# 20.5.3.2 Error.prototype.message
Error.prototype.message özelliğinin başlangıç değeri boş Dizedir.
# 20.5.3.3 Error.prototype.name
Error.prototype.name özelliğinin başlangıç değeri "Error" dizisidir.
# 20.5.3.4 Error.prototype.toString ( )
Bu yöntem, ç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) , bir TypeError istisnası fırlat.
name , ? Get (obj , "name") olsun.
Eğer name undefined ise, name değerini "Error" olarak ayarla; değilse name değerini ? ToString (name ) olarak ayarla.
message , ? Get (obj , "message") olsun.
Eğer message undefined ise, message değerini boş Dize olarak ayarla; değilse message değerini ? ToString (message ) olarak ayarla.
Eğer name boş Dize ise, message döndür.
Eğer message boş Dize ise, name döndür.
name , 0x003A (COLON) kod birimi (code unit), 0x0020 (SPACE) kod birimi ve message değerlerinin dize birleşimini (string-concatenation) döndür.
# 20.5.4 Error Örneklerinin Özellikleri (Properties of Error Instances)
Error örnekleri, Error prototip nesnesinden (Error prototype object) özellikler miras alan sıradan nesnelerdir (ordinary objects) ve değeri undefined olan bir [[ErrorData]] dahili yuvasına (internal slot) sahiptirler. [[ErrorData]] yuvasının belirtilen tek kullanımı; Object.prototype.toString ve Error.isError içinde Error, AggregateError ve NativeError örneklerini Error nesneleri olarak tanımlamaktır.
# 20.5.5 Bu Standartta Kullanılan Yerleşik Hata (Native Error) Türleri (Native Error Types Used in This Standard)
Bir çalışma zamanı hatası algılandığında, aşağıdaki NativeError nesnelerinden birinin yeni bir örneği veya AggregateError nesnesinin yeni bir örneği fırlatılır. Tüm NativeError nesneleri, 20.5.6 içinde açıklandığı gibi aynı yapıyı paylaşır.
# 20.5.5.1 EvalError
EvalError yapıcısı (constructor) %EvalError% nesnesidir.
Bu istisna şu anda bu belirtim (specification) içinde kullanılmamaktadır. Bu nesne, bu belirtimin önceki sürümleriyle uyumluluk amacıyla korunmaktadır.
# 20.5.5.2 RangeError
RangeError yapıcısı (constructor) %RangeError% nesnesidir.
İzin verilen değerler kümesinde veya aralığında olmayan bir değeri belirtir.
# 20.5.5.3 ReferenceError
ReferenceError yapıcısı (constructor) %ReferenceError% nesnesidir.
Geçersiz bir başvurunun (reference) algılandığını belirtir.
# 20.5.5.4 SyntaxError
SyntaxError yapıcısı (constructor) %SyntaxError% nesnesidir.
Bir ayrıştırma hatasının (parsing error) oluştuğunu belirtir.
# 20.5.5.5 TypeError
TypeError yapıcısı (constructor) %TypeError% nesnesidir.
TypeError, diğer NativeError nesnelerinin hiçbiri başarısızlık nedeninin uygun bir göstergesi olmadığında, başarısız bir işlemi belirtmek için kullanılır.
# 20.5.5.6 URIError
URIError yapıcısı (constructor) %URIError% nesnesidir.
Global URI işleme işlevlerinden birinin tanımıyla uyumsuz bir şekilde kullanıldığını belirtir.
# 20.5.6 NativeError Nesne Yapısı (NativeError Object Structure)
Bu nesnelerin her biri, yalnızca yapıcı (constructor) adı olarak kullanılan adda ve prototip nesnesinin "name" özelliğinde farklılık göstererek aşağıda açıklanan yapıya sahiptir.
Her bir hata nesnesi için, tanımdaki NativeError başvuruları, 20.5.5 içindeki uygun hata nesnesi adı ile değiştirilmelidir.
# 20.5.6.1 NativeError Yapıcıları (The NativeError Constructors)
Her bir NativeError yapıcısı (constructor) :
bir yapıcı (constructor) yerine bir işlev olarak çağrıldığında yeni bir NativeError nesnesi oluşturur ve başlatır. Nesnenin bir işlev olarak çağrılması, aynı argümanlarla bir yapıcı olarak çağrılmasına eşdeğerdir. Böylece *NativeError*(…) işlev çağrısı, aynı argümanlarla yapılan new *NativeError*(…) nesne oluşturma ifadesine eşdeğerdir.
bir sınıf tanımının extends tümcesinin değeri olarak kullanılabilir. Belirtilen NativeError davranışını miras almayı amaçlayan alt sınıf yapıcıları (constructors) , alt sınıf örneklerini bir [[ErrorData]] dahili yuvası (internal slot) ile oluşturmak ve başlatmak için NativeError yapıcısına (constructor) yapılacak bir super çağrısı içermelidir.
# 20.5.6.1.1 NativeError ( message [ , options ] )
Her bir NativeError işlevi, çağrıldığında aşağıdaki adımları gerçekleştirir:
Eğer NewTarget undefined ise, newTarget etkin işlev nesnesi (active function object) olsun; değilse newTarget NewTarget olsun.
obj , ? OrdinaryCreateFromConstructor (newTarget , "%*NativeError*.prototype%", « [[ErrorData]] ») olsun.
Eğer message undefined değilse, o halde
messageString , ? ToString (message ) olsun.
CreateNonEnumerableDataPropertyOrThrow (obj , "message", messageString ) işlemini gerçekleştir.
? InstallErrorCause (obj , options ) işlemini gerçekleştir.
obj döndür.
Adım 2 içinde geçirilen dizgenin gerçek değeri; hangi NativeError yapıcısının (constructor) tanımlandığına bağlı olarak "%EvalError.prototype%", "%RangeError.prototype%", "%ReferenceError.prototype%", "%SyntaxError.prototype%", "%TypeError.prototype%" veya "%URIError.prototype%" değerlerinden biridir.
# 20.5.6.2 NativeError Yapıcılarının Özellikleri (Properties of the NativeError Constructors)
Her bir NativeError yapıcısı (constructor) :
değeri %Error% olan bir [[Prototype]] dahili yuvasına (internal slot) sahiptir.
değeri "*NativeError*" Dize değeri olan bir "name" özelliğine sahiptir.
aşağıdaki özelliklere sahiptir:
# 20.5.6.2.1 NativeError .prototype
*NativeError*.prototype özelliğinin başlangıç değeri bir NativeError prototip nesnesidir (20.5.6.3 ). Her NativeError yapıcısının (constructor) kendine özgü bir prototip nesnesi vardır.
Bu özellik { [[Writable]] : false, [[Enumerable]] : false, [[Configurable]] : false } özniteliklerine sahiptir.
# 20.5.6.3 NativeError Prototip Nesnelerinin Özellikleri (Properties of the NativeError Prototype Objects)
Her bir NativeError prototip nesnesi:
# 20.5.6.3.1 NativeError .prototype.constructor
Belirli bir NativeError yapıcısının (constructor) prototipi için "constructor" özelliğinin başlangıç değeri yapıcının (constructor) kendisidir.
# 20.5.6.3.2 NativeError .prototype.message
Belirli bir NativeError yapıcısının (constructor) prototipi için "message" özelliğinin başlangıç değeri boş Dizedir.
# 20.5.6.3.3 NativeError .prototype.name
Belirli bir NativeError yapıcısının (constructor) prototipi için "name" özelliğinin başlangıç değeri, yapıcının adından (NativeError yerine kullanılan ad) oluşan Dize değeridir.
# 20.5.6.4 NativeError Örneklerinin Özellikleri (Properties of NativeError Instances)
NativeError örnekleri, kendi NativeError prototip nesnelerinden özellikler miras alan sıradan nesnelerdir (ordinary objects) ve değeri undefined olan bir [[ErrorData]] dahili yuvasına (internal slot) sahiptirler. [[ErrorData]] dahili yuvasının belirtilen tek kullanımı; Object.prototype.toString (20.1.3.6 ) ve Error.isError (20.5.2.1 ) tarafından Error, AggregateError veya NativeError örneklerini tanımlamaktır.
# 20.5.7 AggregateError Nesneleri (AggregateError Objects)
# 20.5.7.1 AggregateError Yapıcısı (The AggregateError Constructor)
AggregateError yapıcısı (constructor) :
%AggregateError% nesnesidir.
global nesnenin (global object) "AggregateError" özelliğinin başlangıç değeridir.
bir yapıcı (constructor) yerine bir işlev olarak çağrıldığında yeni bir AggregateError nesnesi oluşturur ve başlatır. Bu nedenle AggregateError(…) işlev çağrısı, aynı argümanlarla yapılan new AggregateError(…) nesne oluşturma ifadesine eşdeğerdir.
bir sınıf tanımının extends tümcesinin değeri olarak kullanılabilir. Belirtilen AggregateError davranışını miras almayı amaçlayan alt sınıf yapıcıları (constructors) , alt sınıf örneklerini bir [[ErrorData]] dahili yuvası (internal slot) ile oluşturmak ve başlatmak için AggregateError yapıcısına (constructor) yapılacak bir super çağrısı içermelidir.
# 20.5.7.1.1 AggregateError ( errors , message [ , options ] )
Bu işlev, çağrıldığında aşağıdaki adımları gerçekleştirir:
Eğer NewTarget undefined ise, newTarget etkin işlev nesnesi (active function object) olsun; değilse newTarget NewTarget olsun.
obj , ? OrdinaryCreateFromConstructor (newTarget , "%AggregateError.prototype%", « [[ErrorData]] ») olsun.
Eğer message undefined değilse, o halde
messageString , ? ToString (message ) olsun.
CreateNonEnumerableDataPropertyOrThrow (obj , "message", messageString ) işlemini gerçekleştir.
? InstallErrorCause (obj , options ) işlemini gerçekleştir.
errorsList , ? IteratorToList (? GetIterator (errors , sync)) olsun.
! DefinePropertyOrThrow (obj , "errors", PropertyDescriptor { [[Configurable]] : true, [[Enumerable]] : false, [[Writable]] : true, [[Value]] : CreateArrayFromList (errorsList ) }) işlemini gerçekleştir.
obj döndür.
# 20.5.7.2 AggregateError Yapıcısının Özellikleri (Properties of the AggregateError Constructor)
AggregateError yapıcısı (constructor) :
# 20.5.7.2.1 AggregateError.prototype
AggregateError.prototype özelliğinin başlangıç değeri %AggregateError.prototype% nesnesidir.
Bu özellik { [[Writable]] : false, [[Enumerable]] : false, [[Configurable]] : false } özniteliklerine sahiptir.
# 20.5.7.3 AggregateError Prototip Nesnesinin Özellikleri (Properties of the AggregateError Prototype Object)
AggregateError prototip nesnesi:
%AggregateError.prototype% nesnesidir.
bir sıradan nesnedir (ordinary object) .
bir Error örneği veya bir AggregateError örneği değildir ve bir [[ErrorData]] dahili yuvasına (internal slot) sahip değildir.
değeri %Error.prototype% olan bir [[Prototype]] dahili yuvasına (internal slot) sahiptir.
# 20.5.7.3.1 AggregateError.prototype.constructor
AggregateError.prototype.constructor özelliğinin başlangıç değeri %AggregateError% nesnesidir.
# 20.5.7.3.2 AggregateError.prototype.message
AggregateError.prototype.message özelliğinin başlangıç değeri boş Dizedir.
# 20.5.7.3.3 AggregateError.prototype.name
AggregateError.prototype.name özelliğinin başlangıç değeri "AggregateError" dizisidir.
# 20.5.7.4 AggregateError Örneklerinin Özellikleri (Properties of AggregateError Instances)
AggregateError örnekleri, kendi AggregateError prototip nesnelerinden (AggregateError prototype object) özellikler miras alan sıradan nesnelerdir (ordinary objects) ve değeri undefined olan bir [[ErrorData]] dahili yuvasına (internal slot) sahiptirler. [[ErrorData]] dahili yuvasının belirtilen tek kullanımı; Object.prototype.toString (20.1.3.6 ) ve Error.isError (20.5.2.1 ) tarafından Error, AggregateError veya NativeError örneklerini tanımlamaktır.
# 20.5.8 Hata Nesneleri için Soyut İşlemler (Abstract Operations for Error Objects)
# 20.5.8.1 InstallErrorCause ( obj , options )
Soyut işlem InstallErrorCause; obj (bir Nesne) ve options (bir ECMAScript dil değeri (ECMAScript language value) ) argümanlarını alır ve unused içeren bir normal tamamlanma (normal completion) ya da bir fırlatma tamamlanması (throw completion) döndürür. options üzerinde bir "cause" özelliği mevcut olduğunda, obj üzerinde bir "cause" özelliği oluşturmak için kullanılır. Çağrıldığında aşağıdaki adımları gerçekleştirir:
Eğer options bir Nesne ise (is an Object) ve ? HasProperty (options , "cause") değeri true ise, o halde
cause , ? Get (options , "cause") olsun.
CreateNonEnumerableDataPropertyOrThrow (obj , "cause", cause ) işlemini gerçekleştir.
unused döndür.
← önceki 19 Global Nesne (The Global Object)
sonraki → 21 Sayılar ve Tarihler (Numbers and Dates)