JavaScript Sembolü (Örneklerle)

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))

Ilginç makaleler...