Dalam JavaScript tradisional, getter dan setter ditakrifkan untuk nama sifat tertentu. Walau bagaimanapun, adalah mungkin untuk mencipta pengambil dan penetap dinamik yang lebih fleksibel menggunakan proksi yang diperkenalkan pada ES2015.
Penetap dan penetap dinamik membenarkan akses dan pengubahsuaian harta benda tanpa definisi yang jelas. Begini cara untuk melaksanakannya menggunakan proksi:
<code class="js">"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); // Modify the value here before returning return rv; } // Define default behavior for unknown properties return "missing"; } });</code>
Dengan adanya proksi di atas, akses dan pengubahsuaian hartanah boleh dilakukan secara dinamik:
<code class="js">console.log(`proxy.example = ${proxy.example}`); // "proxy.example = VALUE" console.log(`proxy.unknown = ${proxy.unknown}`); // "proxy.unknown = missing"</code>
Proksi disokong dalam penyemak imbas moden seperti Chrome, Firefox dan Safari. Walau bagaimanapun, untuk penyemak imbas lama yang tidak menyokong proksi, penyelesaian boleh dilaksanakan menggunakan sintaks getter/setter dinamik tanpa proksi.
Atas ialah kandungan terperinci Bagaimanakah Pengambil dan Penetap Dinamik Boleh Meningkatkan Fleksibiliti dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!