API Reflect
Majukan operasi dengan kaedah Reflect.
API Reflect ialah pelajaran Akademi JavaScript percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Akademi JavaScript, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Akademi JavaScript merangkumi sejumlah 4 pelajaran.
Apakah Itu Reflect
Reflect ialah objek terbina dalam dengan kaedah yang melaksanakan operasi aras rendah lalai pada objek: mendapatkan, menetapkan, memadam dan banyak lagi.
Kaedahnya sepadan satu dengan satu dengan perangkap proksi, menjadikannya pasangan ideal untuk menulis proksi yang betul.
Reflect.get
Reflect.get(target, prop) membaca sifat, sama seperti target[prop], tetapi dalam bentuk panggilan fungsi yang kemas.
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 sifat dan mengembalikan true atau false untuk menunjukkan kejayaan, seperti yang diperlukan 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 sepadan dengan operator in, manakala Reflect.deleteProperty sepadan dengan delete; kedua-duanya ialah 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 sifat sendiri, termasuk simbol dan kunci yang tidak terenumerasi, dengan hasil yang lebih lengkap berbanding 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));Memajukan dalam Proksi
Inilah kuasa sebenar: di dalam perangkap, panggil kaedah Reflect yang sepadan untuk melaksanakan tingkah laku lalai, kemudian tambahkan logik tersuai di sekelilingnya.
const proxy = new Proxy({ v: 1 }, {
get(target, prop, receiver) {
console.log('reading ' + prop);
return Reflect.get(target, prop, receiver);
}
});
console.log(proxy.v);Memajukan set dengan Betul
Menggunakan Reflect.set di dalam perangkap set mengembalikan nilai boolean yang betul secara automatik, jadi Anda tidak perlu mengingati 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
Melewatkan receiver kepada Reflect.get dan Reflect.set memastikan getter dan setter dijalankan dengan this yang betul, yang penting apabila 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 tatasusunan argumen yang diberikan, sebagai alternatif yang lebih kemas kepada fn.apply.
function greet(greeting, name) {
return greeting + ', ' + name;
}
console.log(Reflect.apply(greet, null, ['Hello', 'Ada']));Reflect.construct
Reflect.construct(Cls, argsArray) mencipta instance, setara dengan new Cls(...args) tetapi menggunakan tatasusunan 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 dalaman objek dalam bentuk fungsi yang boleh dijangka dan berpasangan dengan sempurna dengan proksi: setiap perangkap memajukan operasi kepada kaedah Reflect yang sepadan. Hasilnya ialah kod proksi yang betul dan minimum. Seterusnya, Anda akan menggunakan semua ini untuk kes penggunaan praktikal.
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);Semakan Pantas
Mengapa memanggil Reflect.get(target, prop, receiver) di dalam perangkap get dan bukannya target[prop]?
Imbas Kembali: API Reflect
Anda telah mempelajari pasangan Proxy:
Reflectmenyediakan operasi lalai dalam bentuk fungsi:get,set,has,deleteProperty,ownKeys.- Kaedahnya sepadan satu dengan satu dengan perangkap proksi.
- Pemajuan melalui
Reflectdenganreceivermengekalkan pewarisan yang betul. Reflect.applydanReflect.constructmemanggil fungsi dan mencipta instance dengan kemas.
Pelajari JavaScript dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 59
- Pelajaran
- 200
Soalan Lazim
Adakah pelajaran “API Reflect” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Akademi JavaScript, termasuk “API Reflect”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Akademi JavaScript merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “API Reflect”?
Majukan operasi dengan kaedah Reflect. Anda berlatih Akademi JavaScript menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Akademi JavaScript?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Akademi JavaScript di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.
Berapa lamakah pelajaran “API Reflect” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Akademi JavaScript ini?
Ya. Setiap pelajaran Akademi JavaScript menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.