Memahami Symbol pada ES6
Miskonsepsi tentang Tipe Data Symbol
Sejak javascript pertama kali distandarisasi pada tahun 1997 sampai versi ES6 dirilis, javascript hanya mempunyai 6 tipe data, yaitu :
- string
- number
- boolean
- Object
- null
- undefined
Pada ES6 ditambahkan tipe data baru bernama Symbol, tipe data ini termasuk primitive type data, artinya datanya akan disimpan langsung ke lokasi memori yang dapat diakses oleh variabel. lalu tipe data Symbol itu seperti apa bentuknya?
Apakah tipe data Symbol pada javascript seperti ini ?
const something = $}#&*);\@~?^[;atau seperti ini ?
const π = π + π;
Jadi, apa sih sebenernya Symbol itu ?
Symbol merupakan tipe data yang memiliki value unik dan tidak dapat diubah nilainya (immutable). Value dari tipe data ini bukan string, bukan number, bukan juga Object, melainkan sebuah tipe data yang benar-benar baru di ES6.
oke kita langsung ke contoh aja ya biar gak tambah bingung wkwk π

- Untuk membuat tipe data Symbol kita hanya perlu memanggil
Symbol() - String
βxβpadaSymbol(βxβ)merupakan description Symbol, ini untuk membantu saat debugging nantinya, description ini bersifat opsional, ingat"x"bukan sebuah value. - Mungkin sebagian dari kalian ada bertanya-tanya kok bisa variabel
isSamehasilnyafalse???? π jadi gini, seperti yang aku bilang tadi, tipe data Symbol menjamin keunikan data dan"x"bukanlah sebuah value tetapi hanya description sehingga tdk bisa dibandingkan. - Kita juga bisa membuat Symbol secara global menggunakan
Symbol.for(), nah nanti description dari Symbol tersebut akan dijadikan sebagai key, di global symbol registry hanya boleh ada satu key yang sama, jadi kalau kita memanggilSymbol.for(βxβ)sebanyak 2 kali atau bahkan 1000 kali, valuenya akan tetap sama sehingga variabelisSame2akan bernilaitrue
// menampilkan key dari tipe data Symbol
console.log(Symbol.keyFor(Symbol.for("y"))); // output: yLalu, kapan kita harus menggunakan Symbol ?
Setelah kita mengetahui apa itu Symbol, dan fungsi dari Symbol, selanjutnya kita bisa memanfaatkan keunikan value yang dihasilkan tipe data Symbol untuk menghindari bentrokan penamaan key dari sebuah Object.

Pada variabel friends kita mempunyai 3 buah data, namun saat di tampilkan ke console kita hanya mempunyai 2 buah data, itu karena ada key yang duplikat, sehingga data duplikat yang lama akan direplace oleh data duplikat yang baru. untuk solve masalah ini, kita bisa menggunakan tipe data Symbol sebagai key atau identitas property nya.

Ohya, jika kita menggunakan tipe data Symbol sebagai key atau identitas property sebuah Object, maka kita tidak bisa melakukan perulangan atau looping pada Object tersebut.

Kalau kita jalankan, kode diatas tidak akan mengembalikan output apapun alias nothing, lalu gimana dong kalau kita ingin mendapatkan suatu informasi dari variabel friendsΒ ??? tenang aja banyak jalan menuju roma π

Step pertama, kita dapatkan dulu Symbol dari masing-masing data pada variabel friends, setelah kita mendapatkan Symbol nya, kita bisa mengakses masing-masing data pada variabel friends dengan cara friends[symbol]
Jika kamu merasa artikel ini bermanfaat, feel free to share it with your friends and give a claps ππ
Thanks for reading ! π
