Memahami cara membuat getter dan setter untuk sifat yang dipratentukan dalam JavaScript ialah konsep biasa. Walau bagaimanapun, memperluaskan fungsi ini untuk merangkumi pengendalian dinamik bagi mana-mana nama harta yang tidak ditakrifkan dengan jelas menimbulkan cabaran yang unik.
Kefungsian Pengambil dan Penetap Dinamik dalam PHP
PHP menggunakan kaedah ajaib __get() dan __set() untuk mentakrifkan gelagat getter dan setter secara dinamik untuk sebarang harta. Ini menyediakan pendekatan yang mudah dan fleksibel untuk memanipulasi sifat dengan cepat.
Proksi JavaScript untuk Penyelamat
Setakat ES2015, JavaScript memperkenalkan proksi, pengubah permainan untuk pelaksanaan getter dan setter dinamik. Proksi membenarkan penciptaan objek yang berfungsi sebagai fasad untuk objek lain, membolehkan pemintasan dan pengubahsuaian akses harta benda.
Contoh Penggunaan Proksi untuk Pengambil/Penetap Dinamik
Mari kita pertimbangkan contoh berikut, di mana semua nilai sifat yang tidak wujud akan mengembalikan "hilang" dan nilai sifat rentetan akan ditukar kepada huruf besar apabila diperolehi:
<code class="javascript">"use strict"; if (typeof Proxy == "undefined") { throw new Error("This browser doesn't support Proxy"); } let original = { example: "value", }; let 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"; } });</code>
Menguji Tingkah Laku Dinamik
console.log(original.example = ${original.example}); // "original.example = value"
console.log(proxy.example = ${proxy.example}); // "proxy.example = VALUE"
console.log(proxy.unknown = ${proxy.unknown}); // "proxy.unknown = missing"
original.example = "updated";
console.log(original.example = ${original.example}); // "original.example = dikemas kini"
console.log(proxy.example = ${proxy.example}); // "proxy.example = DIKEMASKINI"
Seperti yang ditunjukkan, proksi memintas akses sifat dan menggunakan gelagat yang ditentukan untuk sifat tidak wujud ("hilang") dan sifat rentetan (penukaran huruf besar). Ia juga membenarkan pengubahsuaian pada objek asal, dengan proksi mencerminkan perubahan yang dibuat.
Keserasian Pelayar
Proksi disokong dalam semua penyemak imbas moden utama, termasuk Chrome, Firefox , Edge, Safari dan Internet Explorer 11 .
Atas ialah kandungan terperinci Bagaimanakah Objek Proksi JavaScript boleh digunakan untuk melaksanakan getter dan setter dinamik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!