0Pricing
JavaScript Academy · Pelajaran

WeakMap dan WeakSet — Privasi serta Tembolok Sederhana

Pelajari dasar WeakMap/WeakSet: kunci yang hanya berupa objek, tanpa ukuran/iterasi, pembantu privasi, dan tembolok kecil yang dibersihkan otomatis

WeakMap dan WeakSet — Privasi serta Tembolok Sederhana adalah pelajaran JavaScript Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 3. 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 3 pelajaran total.

Mengapa koleksi lemah?

Tujuan: Menambahkan metadata ke objek tanpa menghalangi pengumpulan sampah.

  • WeakMap: objek → nilai
  • WeakSet: keanggotaan objek
  • Tanpa size, tanpa iterasi
  • Cocok untuk privasi dan cache
WeakMap dan WeakSet — Privasi serta Tembolok Sederhana — ilustrasi 1

Dasar-dasar WeakMap

WeakMap hanya menerima key berupa objek; mendukung set/get/has/delete; tidak mendukung iterasi atau size.

// WeakMap: keys must be objects
const wm = new WeakMap();

const user = { name: "Ayla" };
wm.set(user, { visits: 1 });

console.log("has user?", wm.has(user));
console.log("get meta:", wm.get(user));

// Note: no wm.size, no wm.keys() — not iterable
WeakMap dan WeakSet — Privasi serta Tembolok Sederhana — ilustrasi 2

Dasar-dasar WeakSet

WeakSet menyimpan objek; tanpa duplikat, tanpa iterasi, dan tanpa properti size.

// WeakSet: store objects without duplicates
const ws = new WeakSet();

const obj1 = {};
const obj2 = {};

ws.add(obj1);
ws.add(obj2);
ws.add(obj1); // duplicate ignored

console.log("has obj1?", ws.has(obj1));

// Note: no ws.size and no iteration
WeakMap dan WeakSet — Privasi serta Tembolok Sederhana — ilustrasi 3

Privasi melalui WeakMap

Gunakan WeakMap untuk melampirkan data tersembunyi ke objek API; ketika objek API sudah tidak ada, datanya dapat dikumpulkan.

// Privacy helper: store private data outside the object
const _priv = new WeakMap();

function makeCounter() {
  const api = {};
  _priv.set(api, { value: 0 });

  api.inc = function () {
    const box = _priv.get(api);
    box.value = box.value + 1;
    console.log("value", box.value);
  };

  // No public field exposes value directly
  return api;
}

const c = makeCounter();
c.inc();
c.inc();
// console.log(c.value) -> undefined (nothing public)
WeakMap dan WeakSet — Privasi serta Tembolok Sederhana — ilustrasi 4

Cache per objek

Buat cache per objek; entri menghilang saat objek key tidak lagi dirujuk.

// Cache computed data per object without leaks
const cache = new WeakMap();

function computeLength(doc) {
  // Return cached result if present
  if (cache.has(doc)) {
    return cache.get(doc);
  }
  // Fake "expensive" compute
  const result = (doc.text || "").length;
  cache.set(doc, result);
  return result;
}

const d1 = { text: "hello" };
const d2 = { text: "world!" };

console.log("len d1:", computeLength(d1));
console.log("len d1 cached:", computeLength(d1));
console.log("len d2:", computeLength(d2));

// If d1/d2 become unreachable, their cache entries can disappear automatically
WeakMap dan WeakSet — Privasi serta Tembolok Sederhana — ilustrasi 5

Batasan dan kapan tidak menggunakannya

Ingat:

  • WeakMap/WeakSet tidak mendukung iterasi atau size.
  • Key harus berupa objek.
  • Gunakan Map/Set jika Anda perlu menampilkan key atau menghitung item.
WeakMap dan WeakSet — Privasi serta Tembolok Sederhana — ilustrasi 6

Kuis WeakMap dan Map

Pemeriksaan singkat: Kasus penggunaan WeakMap.

WeakMap dan WeakSet — Privasi serta Tembolok Sederhana — ilustrasi 7

Ringkasan

Ringkasan: Gunakan WeakMap untuk privasi dan cache objek→nilai; gunakan WeakSet untuk keanggotaan objek tanpa kebocoran. Ingat: hanya key objek, tanpa iterasi atau size.

WeakMap dan WeakSet — Privasi serta Tembolok Sederhana — ilustrasi 8

Pertanyaan yang Sering Diajukan

Apakah pelajaran “WeakMap dan WeakSet — Privasi serta Tembolok Sederhana” gratis?

Ya — teks lengkap “WeakMap dan WeakSet — Privasi serta Tembolok Sederhana” 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 3 pelajaran total.

Apa yang akan aku pelajari di “WeakMap dan WeakSet — Privasi serta Tembolok Sederhana”?

Pelajari dasar WeakMap/WeakSet: kunci yang hanya berupa objek, tanpa ukuran/iterasi, pembantu privasi, dan tembolok kecil yang dibersihkan otomatis 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 3.

Berapa lama pelajaran “WeakMap dan WeakSet — Privasi serta Tembolok Sederhana” 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. Dasar-Dasar Map dan Set
  2. WeakMap dan WeakSet — Privasi serta Tembolok Sederhana
  3. Pola Iterasi
← Kembali ke JavaScript Academy