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:
Reflectmenyediakan operasi default berbentuk fungsi:get,set,has,deleteProperty,ownKeys.- Metodenya mencerminkan perangkap proksi satu per satu.
- Penerusan melalui
Reflectdenganreceivermenjaga pewarisan tetap benar. Reflect.applydanReflect.constructmemanggil 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.