Katmanya · Bestiyer

Çekmece Kaplumbağası

object

Kabuğu küçük çekmecelerden yapılmış yaşlı, sakin bir kaplumbağa. Her çekmecenin önünde bir etiket vardır; çekmece açılınca içinden değer çıkar.

İki anlatım

Başlangıç

Bir şey hakkında birkaç bilgiyi bir arada tutmak istersin: bir kedinin adı, yaşı, rengi. Bilgisayar bunları Çekmece Kaplumbağası’nın kabuğuna koyar.

Her çekmecenin bir etiketi vardır. Sen etiketi söylersin, kaplumbağa çekmeceyi açar.

Kaplumbağaya istediğin zaman yeni çekmece ekleyebilir, birini çıkarabilirsin. Olmayan bir etiketi sorarsan çekmece boş çıkar, kaplumbağa kızmaz.

İleri

Çekmece Kaplumbağası bir nesnedir (object): değerleri adlarla (anahtar) tutan, içeriği değiştirilebilen bir kayıt.

Ne yapar

  • Değerleri etiketle tutar ve verir: kedi.ad ya da kedi["ad"].
  • Çekmece ekler, değiştirir, söker (delete).
  • Bir çekmecesinde başka bir yaratık taşıyabilir: tren, solucan, başka kaplumbağa.
  • Kendinde olmayan bir çekmeceyi sorulunca ebeveynine (prototipine) sorar.

Ne yapamaz

  • Etiketi sayı yapamaz: k[1] yazınca etiket "1" metni olur. Etiket yalnızca metin ya da Symbol olabilir.
  • İki ayrı kaplumbağayı içleri aynı diye eş sayamaz: {} === {} her zaman false verir.
  • Sıradan bir kaplumbağa olmayan çekmeceyi açınca hata vermez, undefined döner. Olmayan bir kaplumbağanın çekmecesini sormak ise hata verir.

Kod karşılığı

const kedi = { ad: "Tekir", yas: 3 };
const ayni = kedi;
ayni.yas = 4;         // kedi.yas da 4: tek kaplumbağa, iki ad
kedi.renk;            // → undefined
({}) === ({});        // → false

İleri kurallar

  • Değişken kaplumbağanın kendisini değil, nerede olduğunu tutar. ayni = kedi yeni kaplumbağa yapmaz. Kopya için { ...kedi } (yalnızca ilk kat) ya da structuredClone(kedi) (derin kopya).
  • structuredClone, çekmecesinde solucan (fonksiyon) olan kaplumbağada DataCloneError fırlatır; prototip ve sınıf bilgisini de kopyalamaz.
  • const kaplumbağanın çekmecelerini kilitlemez. Object.freeze kilitler ama yalnızca ilk katı: çekmecedeki başka bir nesnenin içi yine değişir.
  • Çekmece sırası: negatif olmayan tam sayı biçimindeki etiketler ("1", "2") küçükten büyüğe önce gelir. "-1" ya da "01" gibi olanlar ve öteki metinler eklenme sırasıyla gelir. Symbol etiketler en sonda.
  • Dizi, fonksiyon, tarih: hepsi nesnedir. typeof null da "object" der ama bu bir hatadır; hayaletlerin sayfasında anlatılıyor.

Nerede kırılır

  • Çekmecede ne var? Gerçek çekmece eşyayı içinde taşır. Nesne ise çekmecesinde başka bir nesneyi değil, onun yerini tutar: iki kaplumbağanın çekmecesi aynı treni gösterebilir. İki kaplumbağanın çekmecesinden aynı trenin bileti çıkar; tren tektir.
  • Kabuk sabit değil. Gerçek kabuk büyümez. Buradaki kabuğa her an çekmece eklenir, çıkarılır.
  • Kaplumbağa ne zaman gider? Gerçek kaplumbağa yaşlanır. Bu kaplumbağa ona ulaşan son ad kalkınca gider: motor yerini geri alır (çöp toplama), ne zaman alacağı bizim kontrolümüzde değildir. Elektrik kesintisi yalnızca en dış sınırdır.
  • Ebeveyne sorma. Anlatımda yaşlı kaplumbağa annesine seslenir. Gerçekte bu bir zincirdir ve en sonda null vardır: kimseye sorulamayınca undefined döner.
Model sayfası: üç poz, üç ifade.
İlk göründüğü masal İki ev bir avlu

Nerede yaşar

Motor Dairesi’nin Öbek’inde. Kabuğun gövdesi derinde, Bellek Ovası’nda kuma yazılmış işaretlerdir.

Kaplumbağa, onu gösteren bir ad kaldığı sürece Öbek’te durur; son ad da gidince motor yerini başka işe verir. Sekme kapanınca o evin bütün kaplumbağaları birden gider. Kalıcı olsun istenirse JSON metnine çevrilip Arşiv Mağaraları’na ya da Ağ Denizi’nden başka bir kıyıya gönderilir.

Akrabaları

  • Sıfır Treni: Etiketleri numara olan özel bir kaplumbağa.
  • Çevirgen Solucan: Çekmecede yaşayan solucana metot denir. Solucanın kendisi de bir nesnedir.
  • İki Hayalet: Olmayan çekmecede Gelmeyen Hayalet oturur; prototip zincirinin sonunda Sandalye Hayaleti bekler.