← Kembali ke kursus
Pelajaran kursus · JavaScript
Pelajaran 36

Proxy dan Reflect

Intersep operasi objek + API refleksi terpadu.

Pahami konsepnya

Proxy membungkus objek dan mencegat operasi padanya: get (baca properti), set (tulis properti), has (in operator), deleteProperty, dan lainnya. Ini fondasi framework reactivity (Vue 3, MobX) dan validasi otomatis.

const p = new Proxy(target, handler) — handler berisi trap: get(target, prop) { ... return Reflect.get(target, prop) }. Reflect menyediakan method yang sama dengan Proxy trap — gunakan keduanya bersama.

Symbol.iterator sebagai generator method membuat objek custom bisa di-for-of dan di-spread. Symbol.toPrimitive mengatur konversi objek ke primitif (number/string). Well-known symbols ini adalah pintu ke metaprogramming tingkat lanjut.

Coba contoh kode

// Proxy: log semua akses
const data = { nama: "Ari", umur: 17 };

const proxy = new Proxy(data, {
  get(target, prop) {
    console.log(`baca: ${prop}`);
    return Reflect.get(target, prop);
  },
  set(target, prop, nilai) {
    console.log(`tulis: ${prop} = ${nilai}`);
    return Reflect.set(target, prop, nilai);
  },
});

console.log(proxy.nama);    // log: "baca: nama" lalu "Ari"
proxy.umur = 18;            // log: "tulis: umur = 18"

Trap get mencegat SETIAP pembacaan properti; set mencegat penulisan. Reflect.get/set melakukan operasi asli setelah logging. Ini cara framework melacak perubahan data secara otomatis.

Latihan singkat

Uji: Proxy yang uppercase setiap get — proxy.nama harus `ARI`.