← ECMAScript 2027 · İçindekiler
ECMA-262 · 18inci Baskı
18

ECMAScript Standart Yerleşik Nesneleri (ECMAScript Standard Built-in Objects)

Bir ECMAScript Script'i veya Module'ü yürütülmeye başladığında her zaman kullanılabilir olan belirli yerleşik nesneler (built-in objects) vardır. Bunlardan biri olan global nesne (global object), yürütülen programın global ortamının bir parçasıdır. Diğerlerine ise global nesnenin (global object) başlangıç özellikleri olarak veya dolaylı olarak erişilebilir durumdaki yerleşik nesnelerin özellikleri olarak erişilebilir.

Aksi belirtilmedikçe, bir işlev (function) olarak çağrılabilen yerleşik bir nesne, 10.3 içinde açıklanan özelliklere sahip yerleşik bir işlev nesnesidir (function object). Aksi belirtilmedikçe, yerleşik bir nesnenin [[Extensible]] dahili yuvası (internal slot) başlangıçta true değerine sahiptir. Her yerleşik işlev nesnesinin (function object), değeri nesnenin başlangıçta oluşturulduğu bölgeye (realm) ait Realm Kaydı (Realm Record) olan bir [[Realm]] dahili yuvası (internal slot) vardır.

Birçok yerleşik nesne işlevdir (function): argümanlarla çağrılabilirler. Bunların bazıları ayrıca yapıcılardır (constructors): new işleci (operator) ile kullanılmak üzere tasarlanmış işlevlerdir. Bu şartname, her bir yerleşik işlev için o işlevin gerektirdiği argümanları ve söz konusu işlev nesnesinin (function object) özelliklerini açıklar. Ayrıca bu şartname, her bir yerleşik yapıcı (constructor) için o yapıcının (constructor) prototip nesnesinin (prototype object) özelliklerini ve o yapıcıyı (constructor) çağıran bir new ifadesi tarafından döndürülen belirli nesne örneklerinin (object instances) özelliklerini açıklar.

Belirli bir işlevin açıklamasında aksi belirtilmedikçe, yerleşik bir işleve veya yapıcıya (constructor) işlevin gerektirdiği belirtilen miktardan daha az argüman verilirse, işlev veya yapıcı (constructor), her biri undefined değerine sahip yeterli sayıda ek argüman verilmiş gibi davranır. Bu tür eksik argümanlar “mevcut değil (not present)” olarak kabul edilir ve şartname algoritmaları tarafından bu şekilde tanımlanabilir. Belirli bir işlevin açıklamasında geçen “this değeri” ve “NewTarget” terimleri, 10.3 içinde verilen anlamlara sahiptir.

Belirli bir işlevin açıklamasında aksi belirtilmedikçe, tanımlanan yerleşik bir işleve veya yapıcıya (constructor) işlevin izin verdiği belirtilen miktardan daha fazla argüman verilirse, fazladan argümanlar çağrı tarafından değerlendirilir ve ardından işlev tarafından göz ardı edilir. Ancak bir gerçekleştirim, salt fazladan bir argümanın varlığına dayanan bir TypeError istisnası fırlatılmaması koşuluyla, bu tür argümanlarla ilgili gerçekleştirime özgü (implementation-specific) davranışlar tanımlayabilir.

Aksi belirtilmedikçe, her yerleşik işlev ve her yerleşik yapıcı (constructor), [[Prototype]] dahili yuvasının (internal slot) değeri olarak, Function.prototype (20.2.3) ifadesinin başlangıç değeri olan Function prototype nesnesine (Function prototype object) sahiptir.

Aksi belirtilmedikçe, Object prototype nesnesinin (Object prototype object) kendisi hariç olmak üzere, her yerleşik prototip nesnesi, [[Prototype]] dahili yuvasının (internal slot) değeri olarak, Object.prototype (20.1.3) ifadesinin başlangıç değeri olan Object prototype nesnesine (Object prototype object) sahiptir.

Eğer bu şartname yerleşik bir yapıcının (constructor) davranışını algoritma adımları aracılığıyla tanımlıyorsa, o halde bu hem [[Call]] hem de [[Construct]] amaçları için geçerli davranışıdır. Eğer böyle bir algoritmanın bu iki durumu ayırt etmesi gerekiyorsa, bir [[Call]] çağrısına işaret eden NewTarget değerinin undefined olup olmadığını kontrol eder.

Belirli bir işlevin açıklamasında aksi belirtilmedikçe, yapıcılar (constructors) olarak tanımlanmayan yerleşik işlev nesneleri (function objects), [[Construct]] dahili yöntemini (internal method) uygulamaz.

Belirli bir işlevin açıklamasında aksi belirtilmedikçe, yapıcı (constructor) olmayan yerleşik işlev nesneleri (function objects) bir "prototype" özelliğine sahip değildir.

Bu şartnamede tanımlanan her bir yerleşik işlev, CreateBuiltinFunction soyut işlemi (10.3.4) çağrılarak oluşturulur. length ve name parametrelerinin değerleri, aşağıda tartışıldığı üzere sırasıyla "length" ve "name" özelliklerinin başlangıç değerleridir. prefix parametresinin değerleri de benzer şekilde aşağıda tartışılmaktadır.

Yapıcılar (constructors) da dahil olmak üzere her yerleşik işlev nesnesi (function object), değeri negatif olmayan bir tamsayı Sayı (integral Number) olan bir "length" özelliğine sahiptir. Aksi belirtilmedikçe bu değer, işlev açıklamasına ait alt madde başlığında gösterilen gerekli parametrelerin sayısıdır. İsteğe bağlı parametreler ve rest parametreleri parametre sayısına dahil edilmez.

Aksi belirtilmedikçe, yerleşik bir işlev nesnesinin (function object) "length" özelliği { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: true } özniteliklerine sahiptir.

Yapıcılar (constructors) da dahil olmak üzere her yerleşik işlev nesnesi (function object), değeri bir Dize olan (is a String) bir "name" özelliğine sahiptir. Aksi belirtilmedikçe bu değer, bu şartnamede işleve verilen addır. Anonim işlevler olarak tanımlanan işlevler, "name" özelliğinin değeri olarak boş Dizeyi kullanır. Nesnelerin özellikleri olarak belirtilen işlevler için ad değeri, işleve erişmek için kullanılan özellik adı (property name) dizesidir. Yerleşik özelliklerin get veya set erişici işlevleri (accessor functions) olarak belirtilen işlevler, CreateBuiltinFunction çağrılırken prefix parametresine sırasıyla "get" veya "set" geçirilmesini sağlar.

Özellik anahtarı (property key) bir Symbol olan (is a Symbol) her yerleşik işlev için "name" özelliğinin değeri açıkça belirtilmiştir. Eğer böyle açıkça belirtilen bir değer "get " veya "set " önekiyle (prefix) başlıyorsa ve belirtildiği işlev yerleşik bir özelliğin get veya set erişici işlevi (accessor function) ise, CreateBuiltinFunction çağrılırken öneksiz değer name parametresine, "get" veya "set" değeri de (sırasıyla) prefix parametresine geçirilir.

Aksi belirtilmedikçe, yerleşik bir işlev nesnesinin (function object) "name" özelliği { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: true } özniteliklerine sahiptir.

Aksi belirtilmedikçe, madde 19 ila 28 arasında ve Ek B.2 altında açıklanan diğer her bir veri özelliği (data property) { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true } özniteliklerine sahiptir.