CodeBlanks Logo Icon CodeBlanks

Hidden classes

V8 hidden classes ve inline cache öğrenirsin.

Hidden classes

V8 her nesneye bir hidden class atar; bu, nesnenin yapısını (hangi özellikler, hangi sırada) özetler. Aynı yapıdaki nesneler aynı hidden class'ı paylaşır; bu, özellik erişimini hızlandırır.

Bir nesneye özellik ekledikçe V8 yeni bir hidden class'a geçiş (transition) yapar. Örnek: önce {} (boş), sonra {x: 1} (x eklendi), sonra {x: 1, y: 2} (y eklendi). Geçiş yolu: root -> x -> y. Aynı sırayla özellik ekleyen nesneler aynı yolu paylaşır; farklı sırayla ekleyenler farklı hidden class'lara düşer. Bu yüzden kurucu fonksiyonlarda tüm özellikleri aynı sırayla eklemek performansı artırır.

Geçiş yolu

Bir nesnenin hidden class geçiş yolunu bir fonksiyonla modelleyebiliriz. buildTransitions(['x', 'y']) 'root -> x -> y' döndürür. Bu, V8'in iç yapısını basit bir dizeyle anlamanı sağlar.

Fonksiyon 'root' ile başlar, her özell için ' -> ' ve özell adını ekler. Örnek: let path = 'root'; for (const p of props) { path += ' -> ' + p; }. Bu, V8'in transition mekanizmasının bir modelidir. Gerçek V8'de her transition bir hidden class nesnesi yaratır; burada sadece yolu dize olarak görselleştiriyoruz. Özellik ekleme sırasının önemi böylece netleşir.

Uygulama Geçiş yolu fonksiyonu yaz

function buildTransitions(props) yaz. İçinde let path = 'root' ile başla. for (const p of props) { path += ' -> ' + p; } ile her özelliği ekle. return path ile döndür. console.log(buildTransitions(['x', 'y'])) ile yazdır.

Başlangıç kodu

index.js
// buildTransitions fonksiyonu yaz
// 'root' başlangıçlı, her özell için ' -> ad' eklesin
// ['x', 'y'] ile çağır ve yazdır
// buraya yaz

Örnek çözüm

index.js
function buildTransitions(props) {
  let path = 'root';
  for (const p of props) {
    path += ' -> ' + p;
  }
  return path;
}
console.log(buildTransitions(['x', 'y']));

Beklenen çıktı

root -> x -> y

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Kavramı açıklamasına eşle

Kavram Anlamı
Hidden class Nesnenin yapısını özetler
Transition Yeni hidden class'a geçiş
root Boş nesnenin hidden class'ı
Aynı sıra Hidden class paylaşımı

2 İki nesne aynı hidden class'ı paylaşmaz, sebebi?

index.js
const a = {}; a.x = 1; a.y = 2;
const b = {}; b.y = 2; b.x = 1;
  • İsimler farklı
  • Değerler farklı
  • Özellik ekleme sırası farklı Doğru cevap
  • İkisi de boş

Açıklama: a önce x sonra y; b önce y sonra x ekler. Sıra farklı olduğundan farklı hidden class.

3 for döngüsünü tamamla

Soru
for (const p of ____) { path += ' -> ' + p; }
Cevap
for (const p of props) { path += ' -> ' + p; }

Açıklama: props dizisi üzerinde döngü kurulur.

Uzman bölümündeki tüm dersler