0Pricing
JavaScript Academy · Pelajaran

Symbol sebagai Kunci Objek

Gunakan symbol untuk properti yang tidak bertabrakan.

Symbol sebagai Kunci Objek adalah pelajaran JavaScript Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar JavaScript Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus JavaScript Academy mencakup 4 pelajaran total.

Simbol sebagai Kunci

Simbol dapat digunakan sebagai kunci properti objek. Karena setiap simbol bersifat unik, properti tersebut tidak mungkin bertabrakan secara tidak sengaja dengan kunci teks apa pun.

const id = Symbol("id")
const user = {}
user[id] = 123
console.log(user[id])

Kunci Simbol Terhitung

Untuk menggunakan simbol sebagai kunci dalam literal objek, apit simbol dengan tanda kurung siku sebagai nama properti terhitung.

const id = Symbol("id")
const user = {
  name: "Ann",
  [id]: 99
}
console.log(user[id])

Membaca Properti Simbol

Anda harus menyimpan referensi ke simbol yang sama untuk membaca propertinya. Tanpa referensi tersebut, nilainya pada dasarnya tersembunyi.

const secret = Symbol("secret")
const obj = { [secret]: "hidden" }
console.log(obj[secret])

Tidak Terhitung dalam for-in

Kunci simbol dilewati oleh perulangan for-in. Dengan demikian, properti simbol tidak muncul dalam iterasi biasa.

const tag = Symbol("tag")
const obj = { a: 1, b: 2, [tag]: 3 }
for (const key in obj) {
  console.log(key)
}

Dilewati oleh Object.keys

Object.keys hanya mengembalikan kunci teks, sehingga properti dengan kunci simbol juga tidak disertakan.

const tag = Symbol("tag")
const obj = { a: 1, [tag]: 2 }
console.log(Object.keys(obj))

Tersembunyi dari JSON

JSON.stringify sepenuhnya mengabaikan kunci simbol, sehingga kunci tersebut tidak pernah muncul dalam keluaran yang diserialisasi. Hal ini membuatnya berguna untuk metadata internal.

const meta = Symbol("meta")
const obj = { name: "Bo", [meta]: "internal" }
console.log(JSON.stringify(obj))

Menemukan Kunci Simbol

Untuk mencantumkan kunci simbol, gunakan Object.getOwnPropertySymbols, yang mengembalikan array berisi properti simbol pada suatu objek.

const tag = Symbol("tag")
const obj = { a: 1, [tag]: 2 }
const syms = Object.getOwnPropertySymbols(obj)
console.log(syms.length)

Menghindari Benturan Nama

Kunci simbol memungkinkan pustaka yang berbeda menambahkan properti ke objek yang sama tanpa risiko saling menimpa, karena simbolnya berbeda.

const libA = Symbol("data")
const libB = Symbol("data")
const shared = {}
shared[libA] = 1
shared[libB] = 2
console.log(shared[libA], shared[libB])

Kunci Simbol dan Spread

Operator spread objek juga menyalin kunci simbol, tidak seperti for-in dan Object.keys. Jadi, perhatikan bahwa kunci tersebut ikut terbawa saat membuat klona.

const tag = Symbol("tag")
const src = { a: 1, [tag]: 2 }
const copy = { ...src }
console.log(copy[tag])

Menyimpan Data yang Menyerupai Privat

Kunci simbol menawarkan bentuk privasi yang bersifat lunak: data hanya dapat diakses oleh kode yang memegang simbol tersebut, sehingga tidak muncul dalam daftar properti biasa.

const balance = Symbol("balance")
function makeAccount() {
  const acct = {}
  acct[balance] = 100
  return { acct: acct, key: balance }
}
const a = makeAccount()
console.log(a.acct[a.key])

Menghapus Properti Simbol

Anda menghapus properti simbol dengan cara yang sama seperti properti lainnya, yaitu menggunakan operator delete bersama referensi simbol tersebut.

const tag = Symbol("tag")
const obj = { [tag]: 5 }
delete obj[tag]
console.log(obj[tag])

Pemeriksaan Singkat

Uji pengetahuan Anda tentang kunci simbol.

Ringkasan

Ringkasan: Simbol menyediakan kunci objek yang aman dan tersembunyi.

  • Gunakan tanda kurung siku untuk kunci simbol terhitung
  • Dilewati oleh for-in, Object.keys, dan JSON
  • Dicantumkan melalui Object.getOwnPropertySymbols
  • Sangat baik untuk metadata tanpa benturan
const k = Symbol("k")
const o = { [k]: 7 }
console.log(o[k])

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Symbol sebagai Kunci Objek” gratis?

Ya — teks lengkap “Symbol sebagai Kunci Objek” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus JavaScript Academy, upgrade ke CoddyKit PRO. Kursus JavaScript Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Symbol sebagai Kunci Objek”?

Gunakan symbol untuk properti yang tidak bertabrakan. Kamu berlatih JavaScript Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai JavaScript Academy?

Tidak diperlukan pengalaman sebelumnya. JavaScript Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Symbol sebagai Kunci Objek” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran JavaScript Academy ini?

Ya. Setiap pelajaran JavaScript Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Membuat Symbol Unik
  2. Symbol sebagai Kunci Objek
  3. Registri Symbol Global
  4. Symbol yang Dikenal
← Kembali ke JavaScript Academy