Bolehkah JavaScript Melaksanakan Pengambil/Penetap Dinamik?
Penetap dan penetap dinamik membenarkan objek JavaScript mengendalikan akses dan pengubahsuaian harta melebihi sifat yang dipratakrifkan. Walaupun teknik JavaScript sebelum ini menggunakan getter dan setter khusus untuk sifat yang diketahui, artikel ini meneroka kemungkinan melaksanakan getter dan setter catch-all untuk mana-mana sifat yang tidak ditentukan.
Proksi ES2015: Penyelesaian Dinamik
ES2015 memperkenalkan proksi JavaScript, yang membolehkan penciptaan objek yang berfungsi sebagai perantara untuk objek lain. Keupayaan ini membuka getter dan setter dinamik:
<code class="js">const original = { example: "value", }; const proxy = new Proxy(original, { get(target, name, receiver) { if (Reflect.has(target, name)) { let rv = Reflect.get(target, name, receiver); if (typeof rv === "string") { rv = rv.toUpperCase(); } return rv; } return "missing"; }, }); console.log(`proxy.example = ${proxy.example}`); // "proxy.example = VALUE" console.log(`proxy.unknown = ${proxy.unknown}`); // "proxy.unknown = missing"</code>
Dalam contoh ini, objek proksi memintas akses harta untuk objek asal. Apabila mengakses sifat rentetan, proksi menukarnya kepada huruf besar dan mengembalikannya; untuk sifat yang tidak diketahui, ia mengembalikan "hilang" dan bukannya tidak ditentukan.
Pelaksanaan ini serasi silang penyemak imbas jika penyemak imbas menyokong ES2015 (ES6). Untuk pelayar lama, pertimbangkan untuk menggunakan polyfill atau teknik alternatif. Proksi menyediakan penyelesaian yang fleksibel untuk pengambil dan penetap dinamik, membolehkan pengendalian harta benda yang cekap dan introspeksi harta benda tanpa mengubah suai objek asal.
Atas ialah kandungan terperinci Bolehkah JavaScript Melaksanakan Pengambil dan Penetap Dinamik untuk Sifat Tidak Dapat Diramalkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!