CodeBlanks Logo Icon CodeBlanks

Well-known symbols

JavaScript kursu · İleri seviye · Ders 68/100

Symbol.iterator ve Symbol.toPrimitive gibi yerleşik sembolleri öğrenirsin.

Well-known symbols

JavaScript, Symbol nesnesi üzerinde dile önceden yerleşmiş well-known semboller taşır. Bunlar dilin davranışına kanca atan özel anahtarlardır.

Daha önce Symbol.iterator'ı gördün: for...of nesnelerini gezen mekanizmadır. Bunun dışında Symbol.toPrimitive tür dönüşümünü, Symbol.toStringTag toString çıktısını, Symbol.hasInstance ise instanceof davranışını özelleştirir. Her biri uygulamanın tamamında paylaşılan bir semboldür.

Symbol.toPrimitive

JavaScript bir nesneyi primitive değere çevirmek istediğinde (örneğin +obj veya obj + 1), önce [Symbol.toPrimitive] metoduna bakar.

Bu metod bir ipucu (hint) alır: 'number', 'string' veya 'default'. İpucuya göre uygun primitive değeri döndürürsün. Bu, eski valueOf ve toString ikilisinden daha öncelikli ve nettir.

Uygulama toString çıktısını etiketle

Bir cart nesnesi oluştur. İçine items: 3 dize anahtarını ve [Symbol.toStringTag]: 'Cart' özelliğini ekle. Object.prototype.toString.call(cart) çağrısının sonucunu console.log ile yazdır; çıktı [object Cart] olmalı.

Örnek çözümü göster
const cart = {
  items: 3,
  [Symbol.toStringTag]: 'Cart'
};
console.log(Object.prototype.toString.call(cart));

Kendini test et

  1. Object.prototype.toString.call(obj) çıktısını özelleştirmek için hangi sembol kullanılır?

    • Symbol.iterator
    • Symbol.toPrimitive
    • Symbol.hasInstance
    • Symbol.toStringTag
    Cevabı göster

    Symbol.toStringTag — Doğru. Symbol.toStringTag, toString çıktısındaki etiketi belirler (ör. '[object Cart]').

  2. Symbol.toPrimitive metodunu tanımla

    const price = { value: 100, [____](hint) { return hint === 'number' ? this.value : '$' + this.value; } };
    Cevabı göster
    const price = { value: 100, [Symbol.toPrimitive](hint) { return hint === 'number' ? this.value : '$' + this.value; } };
  3. Well-known semboller

    Symbol.iterator
    for...of ile gezer
    Symbol.toPrimitive
    Tür dönüşümünü özelleştirir
    Symbol.toStringTag
    toString çıktısını etiketler
    Symbol.hasInstance
    instanceof davranışını değiştirir

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