1 dk, tahmini okuma süresi
Sembol, JavaScript'in ilkel veri türlerinden biri ( primitive data type ). Kesinlikle en az kullanılan ve en tuhaf olan veri tipi diyebiliriz. Bir sembol oluşturulduğunda sembolün değeri gizli tutulur. Aynı değere sahip iki sembol asla birbirine eşit olamaz. Bu yüzden isim çakışması sembolleri kullanırken endişelenmeniz gereken bir şey değil.
Sembolleri aşağıdaki gibi oluşturabilirsiniz:
const s = Symbol();
const s2 = Symbol('merhaba');
const s3 = Symbol('merhaba');
Değerler aynı olmasına rağmen Symbol('merhaba') ve Symbol('merhaba') eşit değildir.
Symbol() === Symbol() //false
Symbol('merhaba') === Symbol('merhaba') // false
Nesne özellikleri (Object properties) olarak nesnelerdeki sembolleri kullanabilirsiniz. İsimler asla çakışmayacaktır. Bu şekilde, bir kullanıcı veya sizin tarafınızdan bir değer değiştirilemez ve ya yanlışlıka silinemez.
Özelliklerimizi tanımlamak için Symbol() kullanıldıktan sonra bile, Object.keys() veya Object.getOwnPropertyNames() sonuçları, Symbol() yöntemi kullanılarak oluşturulan özellikleri göstermez. Ancak Object.getOwnPropertySymbols() yöntemi kullanılarak erişilebilirler.
Daha derine inip MDN'deki belgeleri okumanızı tavsiye ederim.
Ilker Akbiyik