Bu eğitimde, örnekler yardımıyla JavaScript Symbol hakkında bilgi edineceksiniz.
JavaScript Sembolü
JavaScript ES6 , adı verilen yeni bir ilkel veri türü tanıttı Symbol. Semboller değişmezdir (değiştirilemez) ve benzersizdir. Örneğin,
// two symbols with the same description const value1 = Symbol('hello'); const value2 = Symbol('hello'); console.log(value1 === value2); // false
Değer1 ve değer2'nin her ikisi de aynı açıklamayı içerse de, farklıdırlar.
Sembol Oluşturma
Bir. Oluşturmak için Symbol()işlevi kullanırsınız Symbol. Örneğin,
// creating symbol const x = Symbol() typeof x; // symbol
İsteğe bağlı bir dizeyi açıklaması olarak iletebilirsiniz. Örneğin,
const x = Symbol('hey'); console.log(x); // Symbol(hey)
Erişim Sembolü Açıklama
Bir sembolün açıklamasına erişmek için .operatörü kullanırız . Örneğin,
const x = Symbol('hey'); console.log(x.description); // hey
Nesne Anahtarı Olarak Sembol Ekleme
Köşeli parantez kullanarak bir nesneye anahtar olarak semboller ekleyebilirsiniz (). Örneğin,
let id = Symbol("id"); let person = ( name: "Jack", // adding symbol as a key (id): 123 // not "id": 123 ); console.log(person); // (name: "Jack", Symbol(id): 123)
Loop'ta… için semboller dahil değildir
for… inDöngü yinelerler Sembolik özellikler üzerinde değil. Örneğin,
let id = Symbol("id"); let person = ( name: "Jack", age: 25, (id): 12 ); // using for… in for (let key in person) ( console.log(key); )
Çıktı
isim yaş
Nesnede Sembol Kullanmanın Yararı
Aynı kod parçacığı çeşitli programlarda kullanılıyorsa Symbols, nesne anahtarında kullanmak daha iyidir . Bunun nedeni, aynı anahtar adını farklı kodlarda kullanabilmeniz ve tekrarlama sorunlarını önleyebilmenizdir. Örneğin,
let person = ( name: "Jack" ); // creating Symbol let id = Symbol("id"); // adding symbol as a key person(id) = 12;
Yukarıdaki programda, personnesne başka bir program tarafından da kullanılıyorsa, başka bir program tarafından erişilebilen veya değiştirilebilen bir özellik eklemek istemezsiniz. Dolayısıyla kullanarak Symbol, kullanabileceğiniz benzersiz bir mülk oluşturursunuz.
Şimdi, diğer programın da id adında bir özelliği kullanması gerekiyorsa , sadece adlandırılmış bir Sembol ekleyin idve çoğaltma sorunları olmaz. Örneğin,
let person = ( name: "Jack" ); let id = Symbol("id"); person(id) = "Another value";
Yukarıdaki programda, değerleri depolamak için aynı ad kullanılsa bile, Symbolveri türünün benzersiz bir değeri olacaktır.
Yukarıdaki programda, dizge anahtarı kullanılmışsa, daha sonraki program özelliğin değerini değiştirirdi. Örneğin,
let person = ( name: "Jack" ); // using string as key person.id = 12; console.log(person.id); // 12 // Another program overwrites value person.id = 'Another value'; console.log(person.id); // Another value
Yukarıdaki programda, ikincisi user.idönceki değerin üzerine yazmaktadır.
Sembol Yöntemleri
Symbol ile kullanılabilen çeşitli yöntemler vardır.
| Yöntem | Açıklama |
|---|---|
for() | Mevcut sembolleri arar |
keyFor() | Genel sembol kayıt defterinden paylaşılan bir sembol anahtarı döndürür. |
toSource() | Symbol nesnesinin kaynağını içeren bir dize döndürür |
toString() | Sembolün açıklamasını içeren bir dize verir |
valueOf() | Symbol nesnesinin temel değerini döndürür. |
Örnek: Sembol Yöntemleri
// get symbol by name let sym = Symbol.for('hello'); let sym1 = Symbol.for('id'); // get name by symbol console.log( Symbol.keyFor(sym) ); // hello console.log( Symbol.keyFor(sym1) ); // id
Sembol Özellikleri
| Özellikleri | Açıklama |
|---|---|
asyncIterator | Bir nesne için varsayılan AsyncIterator'ı döndürür |
hasInstance | Yapıcı nesnenin bir nesneyi örneği olarak tanıyıp tanımadığını belirler |
isConcatSpreadable | Bir nesnenin dizi öğelerine göre düzleştirilmesi gerekip gerekmediğini gösterir |
iterator | Bir nesne için varsayılan yineleyiciyi verir |
match | Bir dizeye karşı eşleşir |
matchAll | Bir dizgeye karşı normal ifadenin eşleşmelerini veren bir yineleyici döndürür |
replace | Bir dizenin eşleşen alt dizelerini değiştirir |
search | Normal ifadeyle eşleşen bir dize içindeki dizini döndürür |
split | Normal bir ifadeyle eşleşen dizinlerde bir dizeyi böler |
species | Türetilmiş nesneler oluşturur |
toPrimitive | Bir nesneyi ilkel bir değere dönüştürür |
toStringTag | Bir nesnenin varsayılan tanımını verir |
description | Sembolün açıklamasını içeren bir dize verir |
Örnek: Sembol Özellikleri Örneği
const x = Symbol('hey'); // description property console.log(x.description); // hey const stringArray = ('a', 'b', 'c'); const numberArray = (1, 2, 3); // isConcatSpreadable property numberArray(Symbol.isConcatSpreadable) = false; let result = stringArray.concat(numberArray); console.log(result); // ("a", "b", "c", (1, 2, 3))








