0Pricing
JavaScript Academy · Pelajaran

API Reflect

Teruskan operasi dengan metode Reflect.

API Reflect adalah pelajaran JavaScript Academy gratis di CoddyKit. Ini adalah pelajaran 3 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.

Apa Itu Reflect?

Reflect adalah objek bawaan dengan metode yang menjalankan operasi tingkat rendah default pada objek: mengambil, menetapkan, menghapus, dan lainnya.

Metodenya mencerminkan perangkap proksi satu per satu, sehingga sangat ideal untuk membantu menulis proksi yang benar.

Reflect.get

Reflect.get(target, prop) membaca properti, sama seperti target[prop], tetapi dalam bentuk pemanggilan fungsi yang rapi.

const obj = { name: 'Ada', age: 36 };

console.log(Reflect.get(obj, 'name'));
console.log(Reflect.get(obj, 'age'));

Reflect.set

Reflect.set(target, prop, value) menulis properti dan mengembalikan true atau false untuk menunjukkan keberhasilan, seperti yang diharapkan oleh perangkap set.

const obj = {};
const ok = Reflect.set(obj, 'score', 42);

console.log(ok);
console.log(obj.score);

Reflect.has dan deleteProperty

Reflect.has mencerminkan operator in, sedangkan Reflect.deleteProperty mencerminkan delete; keduanya berbentuk fungsi yang mengembalikan nilai boolean.

const obj = { a: 1, b: 2 };

console.log(Reflect.has(obj, 'a'));
console.log(Reflect.deleteProperty(obj, 'b'));
console.log(Reflect.has(obj, 'b'));

Reflect.ownKeys

Reflect.ownKeys mengembalikan semua kunci properti milik sendiri, termasuk simbol dan properti yang tidak terenumerasi, sehingga lebih lengkap daripada Object.keys.

const obj = { a: 1, b: 2 };
Object.defineProperty(obj, 'hidden', { value: 3, enumerable: false });

console.log(Object.keys(obj));
console.log(Reflect.ownKeys(obj));

Meneruskan Operasi dalam Proksi

Inilah kekuatan sebenarnya: di dalam perangkap, panggil metode Reflect yang sesuai untuk menjalankan perilaku default, lalu tambahkan logika khusus Anda di sekitarnya.

const proxy = new Proxy({ v: 1 }, {
  get(target, prop, receiver) {
    console.log('reading ' + prop);
    return Reflect.get(target, prop, receiver);
  }
});

console.log(proxy.v);

Meneruskan set dengan Benar

Menggunakan Reflect.set di dalam perangkap set secara otomatis mengembalikan nilai boolean yang tepat, sehingga Anda tidak perlu mengingat untuk mengembalikan true sendiri.

const proxy = new Proxy({}, {
  set(target, prop, value, receiver) {
    console.log('writing ' + prop);
    return Reflect.set(target, prop, value, receiver);
  }
});

proxy.x = 10;
console.log(proxy.x);

Mengapa receiver Penting

Meneruskan receiver ke Reflect.get dan Reflect.set memastikan getter dan setter dijalankan dengan this yang benar. Hal ini penting saat objek saling mewarisi.

const base = { get label() { return 'id-' + this.id; } };
const proxy = new Proxy(base, {
  get(target, prop, receiver) {
    return Reflect.get(target, prop, receiver);
  }
});
const child = Object.create(proxy);
child.id = 7;
console.log(child.label);

Reflect.apply

Reflect.apply(fn, thisArg, argsArray) memanggil fungsi dengan this dan array argumen tertentu, sebagai alternatif yang lebih rapi daripada fn.apply.

function greet(greeting, name) {
  return greeting + ', ' + name;
}

console.log(Reflect.apply(greet, null, ['Hello', 'Ada']));

Reflect.construct

Reflect.construct(Cls, argsArray) membuat sebuah instance, setara dengan new Cls(...args), tetapi menggunakan array argumen.

class Point {
  constructor(x, y) { this.x = x; this.y = y; }
}

const p = Reflect.construct(Point, [3, 4]);
console.log(p.x, p.y);

Mengapa Reflect Penting

Reflect menyediakan versi berbentuk fungsi yang dapat diprediksi untuk operasi internal objek dan sangat cocok dipasangkan dengan proksi: setiap perangkap meneruskan operasi ke metode Reflect yang sesuai. Hasilnya adalah kode proksi yang benar dan minimal. Selanjutnya, Anda akan menerapkan semua ini pada kasus penggunaan praktis.

const audited = new Proxy({ balance: 100 }, {
  set(t, p, v, r) {
    console.log(p + ': ' + t[p] + ' -> ' + v);
    return Reflect.set(t, p, v, r);
  }
});
audited.balance = 150;
console.log(audited.balance);

Pemeriksaan Singkat

Mengapa memanggil Reflect.get(target, prop, receiver) di dalam perangkap get, bukan target[prop]?

Ringkasan: Antarmuka Reflect

Anda telah mempelajari pasangan dari Proxy:

  • Reflect menyediakan operasi default berbentuk fungsi: get, set, has, deleteProperty, ownKeys.
  • Metodenya mencerminkan perangkap proksi satu per satu.
  • Penerusan melalui Reflect dengan receiver menjaga pewarisan tetap benar.
  • Reflect.apply dan Reflect.construct memanggil fungsi dan membuat instance dengan rapi.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “API Reflect” gratis?

Ya — teks lengkap “API Reflect” 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 “API Reflect”?

Teruskan operasi dengan metode Reflect. 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 3 dari 4.

Berapa lama pelajaran “API Reflect” 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 Proxy
  2. Perangkap get dan set
  3. API Reflect
  4. Kasus Penggunaan Praktis Proxy
← Kembali ke JavaScript Academy