← Kembali ke kursus
Pelajaran kursus · JavaScript
Pelajaran 08

Symbol

Kunci unik, well-known symbols, dan use case-nya.

Pahami konsepnya

Symbol adalah tipe primitif ke-7 yang selalu UNIK: Symbol() === Symbol() adalah false, meski deskripsinya sama. Kegunaan utamanya: kunci properti objek yang dijamin tidak bertabrakan dengan properti lain — cocok untuk "hidden" metadata.

Well-known symbols adalah konstanta built-in yang mengubah perilaku objek: Symbol.iterator membuat objek bisa di-for-of; Symbol.toPrimitive mengatur konversi; Symbol.hasInstance menyesuaikan instanceof. Kamu jarang menulisnya langsung, tapi JavaScript memakainya di balik layar untuk spread, destructuring, dan for-of.

Praktisnya: Symbol paling sering ditemui sebagai Symbol.iterator saat membuat custom iterable, atau sebagai pengaman properti "private" di library yang tidak boleh diakses dari luar.

Coba contoh kode

const unik1 = Symbol("id");
const unik2 = Symbol("id");
console.log(unik1 === unik2);  // false — selalu unik

// sebagai kunci yang aman dari tabrakan
const ID = Symbol("userId");
const user = { [ID]: 42, nama: "Ari" };
console.log(user[ID]);         // 42
console.log(Object.keys(user)); // ["nama"] — symbol tersembunyi

// well-known: iterator
const angka = {
  *[Symbol.iterator]() {
    yield 1; yield 2; yield 3;
  }
};
console.log([...angka]);  // [1, 2, 3]

Symbol sebagai kunci objek tidak muncul di Object.keys() atau JSON.stringify — tersembunyi dari iterasi normal. Computed key [ID]: menggunakan symbol sebagai nama properti.

Latihan singkat

Uji: Symbol("a") === Symbol("a") — harus `false`.