Memahami Symbol pada ES6

Miskonsepsi tentang Tipe Data Symbol

Alfin
Alfin
Nov 3 Β· 3 min read
Photo by vardan harutyunyan on Unsplash

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 😍 = πŸ˜€ + πŸ’•;
Nope 😜

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 πŸ˜…

Contoh tipe data Symbol pada ES6
  • Untuk membuat tipe data Symbol kita hanya perlu memanggil Symbol()
  • String β€œx” pada Symbol(β€œ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 isSame hasilnya false ???? πŸ˜… 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 memanggil Symbol.for(β€œx”) sebanyak 2 kali atau bahkan 1000 kali, valuenya akan tetap sama sehingga variabel isSame2 akan bernilai true
// menampilkan key dari tipe data Symbol
console.log(Symbol.keyFor(Symbol.for("y")));
// output: y

Lalu, 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.

Tidak menggunakan tipe data Symbol

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.

Menggunakan tipe data Symbol

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 ! πŸ˜‰

Alfin

Written by

Alfin

Programming β€’ Design β€’ Linux β€’ Philosophy

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium β€” and support writers while you’re at it. Just $5/month. Upgrade