İyi Bilinen Symbol Değerleri
Symbol.iterator ve diğerleriyle davranışı özelleştirin.
İyi Bilinen Symbol Değerleri, CoddyKit'te ücretsiz bir JavaScript Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, JavaScript Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. JavaScript Academy kursu toplamda 4 dersten oluşur.
İyi Bilinen Semboller
İyi bilinen semboller, Symbol nesnesinde saklanan yerleşik sembollerdir. Nesnelerin yineleme ve dönüştürme gibi dil özellikleriyle nasıl davranacağını özelleştirmenizi sağlarlar.
console.log(typeof Symbol.iterator)
console.log(typeof Symbol.toPrimitive)Symbol.iterator
Symbol.iterator, bir nesnenin for-of döngüsü ve yayma işleci tarafından nasıl yineleneceğini tanımlar. Yerleşik diziler ve dizeler bunu zaten sağlar.
const arr = [10, 20]
const it = arr[Symbol.iterator]()
console.log(it.next().value)Bir Nesneyi Yinelenebilir Kılma
Herhangi bir nesneyi for-of döngüsünde kullanılabilir kılmak için, next yöntemine sahip bir yineleyici döndüren bir Symbol.iterator yöntemi eklersiniz.
const range = {
from: 1,
to: 3,
[Symbol.iterator]() {
let cur = this.from
const last = this.to
return {
next() {
return cur <= last ? { value: cur++, done: false } : { value: undefined, done: true }
}
}
}
}
for (const n of range) {
console.log(n)
}Yaymayla Yineleme
Symbol.iterator yayma işlemini de yönettiğinden, özel bir yinelenebilir yapı bir diziye genişletilebilir.
const nums = {
[Symbol.iterator]() {
let i = 0
return { next() { return i < 3 ? { value: i++, done: false } : { value: undefined, done: true } } }
}
}
console.log([...nums])Symbol.toPrimitive
Symbol.toPrimitive, bir nesnenin sayısal, dize veya varsayılan bağlamlarda ilkel değere nasıl dönüştürüleceğini denetlemesini sağlar.
const money = {
amount: 50,
[Symbol.toPrimitive](hint) {
if (hint === "number") return this.amount
return "$" + this.amount
}
}
console.log(+money)
console.log(money + "")İpucu Bağımsız Değişkeni
Dönüştürme işleyicisi number, string veya default değerlerinden oluşan bir ipucu alır; böylece her durum için uygun bir değer döndürebilirsiniz.
const obj = {
[Symbol.toPrimitive](hint) {
return hint
}
}
console.log(+obj)
console.log(obj + "")
console.log(String(obj))Symbol.toStringTag
Symbol.toStringTag, varsayılan toString yönteminin bir nesne için bildirdiği metni özelleştirir; bu, özel tür etiketleri için kullanışlıdır.
const widget = {
[Symbol.toStringTag]: "Widget"
}
console.log(Object.prototype.toString.call(widget))Symbol.hasInstance
Symbol.hasInstance, bir sınıfın veya nesnenin instanceof işlecinin davranışını özelleştirmesini sağlar.
class Even {
static [Symbol.hasInstance](num) {
return num % 2 === 0
}
}
console.log(4 instanceof Even)
console.log(3 instanceof Even)Yerleşik Yapılar da Bunları Kullanır
Diziler, eşlemeler, kümeler ve dizeler Symbol.iterator uygular; bu nedenle for-of ve yayma işleciyle sorunsuz çalışırlar.
const set = new Set([1, 2, 3])
console.log([...set])Neden Önemlidirler
İyi bilinen semboller genişletme noktalarıdır: Nesnelerinizin özel durumlarla ele alınmak yerine yerleşik dil işlemleriyle doğal biçimde bütünleşmesini sağlarlar.
const list = {
items: ["a", "b"],
[Symbol.iterator]() {
return this.items[Symbol.iterator]()
}
}
for (const x of list) {
console.log(x)
}Bunları Keşfetme
Symbol nesnesi bunları statik özellikler olarak sunar. Gereken her yerde Symbol.iterator ve Symbol.toPrimitive gibi bunlara başvurabilirsiniz.
console.log(typeof Symbol.iterator)
console.log(typeof Symbol.toStringTag)
console.log(typeof Symbol.hasInstance)Hızlı Sınama
İyi bilinen semboller bilginizi sınayın.
Özet
Özet: İyi bilinen semboller dil davranışını özelleştirir.
- Symbol.iterator, for-of ve yayma işlemini yönetir
- Symbol.toPrimitive, bir ipucu aracılığıyla dönüştürmeleri denetler
- Symbol.toStringTag nesneleri etiketler
- Symbol.hasInstance, instanceof davranışını özelleştirir
const r = { [Symbol.iterator]() { let i = 0; return { next() { return i < 2 ? { value: i++, done: false } : { value: 0, done: true } } } } }
console.log([...r])Sıkça Sorulan Sorular
“İyi Bilinen Symbol Değerleri” dersi ücretsiz mi?
Evet — “İyi Bilinen Symbol Değerleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve JavaScript Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. JavaScript Academy kursu toplamda 4 dersten oluşur.
“İyi Bilinen Symbol Değerleri” dersinde ne öğreneceğim?
Symbol.iterator ve diğerleriyle davranışı özelleştirin. JavaScript Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
JavaScript Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te JavaScript Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“İyi Bilinen Symbol Değerleri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu JavaScript Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her JavaScript Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Benzersiz Symbol Değerleri Oluşturma
- Nesne Anahtarları Olarak Symbol Değerleri
- Genel Symbol Kayıt Defteri
- İyi Bilinen Symbol Değerleri