CodeBlanks Logo Icon CodeBlanks

Symbol ile gizli özellikler

JavaScript kursu · İleri seviye · Ders 69/100

Symbol özelliklerinin nasıl gizli sayıldığını ve for...in'de görünmediğini öğrenirsin.

Symbol anahtarlar

Bir symbol, bir nesnenin özelliği için anahtar olabilir. Dize anahtarlardan farklı olarak, symbol anahtarları for...in ve Object.keys() işlemlerinden gizlenir; serileştirmede de görünmezler.

Bu, normal döngülerde görünmemesi gereken iç meta verileri depolamak için idealdir. Sembol anahtarlarına erişmek için Object.getOwnPropertySymbols() kullanırsın; çünkü Object.keys yalnızca dize anahtarları verir.

Object.getOwnPropertySymbols

Sembol anahtarlı özelliklere erişmek için Object.getOwnPropertySymbols(obj) kullanılır. Bu metod nesnedeki tüm sembol anahtarlarını bir dizi olarak verir; sembol yoksa boş dizi döner.

Dize ve sembol anahtarları ayrı yuvalarda yaşar: Object.keys() yalnızca dizeleri, Object.getOwnPropertySymbols() yalnızca sembolleri verir. İkisini birlikte kullanarak nesnenin tüm özelliklerini eksiksiz görebilirsin.

Uygulama Sembol özelliğini gizle ve göster

id adında bir sembol oluştur. user nesnesine name: 'Ayşe' dize anahtarını ve [id]: 101 sembol anahtarını ekle. for...in ile user'ı gez ve anahtarları yazdır (yalnızca name görünmeli). Sonra Object.getOwnPropertySymbols(user) ile sembol anahtarlarını yazdır.

Örnek çözümü göster
const id = Symbol('id');
const user = {
  name: 'Ayşe',
  [id]: 101
};
for (let key in user) {
  console.log(key);
}
console.log(Object.getOwnPropertySymbols(user));

Kendini test et

  1. Bir nesnede sembol anahtarlı özellik varsa, for...in döngüsü ne yapar?

    • Sembol özelliklerini de gezer
    • Sembol özelliklerini atlar
    • Hata fırlatır
    • Yalnızca sembol özelliklerini gezer
    Cevabı göster

    Sembol özelliklerini atlar — Doğru. for...in yalnızca dize ve sayı anahtarlarını gezer; sembol anahtarları atlanır.

  2. Sembolü anahtar olarak kullan

    const secret = Symbol('id'); const user = { name: 'Ayşe', [____]: 42 };
    Cevabı göster
    const secret = Symbol('id'); const user = { name: 'Ayşe', [secret]: 42 };
  3. Sembol anahtar özellikleri

    Symbol anahtar
    for...in'de görünmez
    Object.keys()
    Yalnızca dize anahtarları
    Object.getOwnPropertySymbols()
    Sembol anahtarlarını verir
    Sembol özellik
    Dize özellikten ayrı bir yuvada

İleri seviye bölümündeki tüm dersler