Soalan:
Walaupun JavaScript standard membenarkan penciptaan getter dan setter untuk sifat tertentu, adakah mungkin untuk mencipta penangkap dan penetap yang mengendalikan mana-mana nama sifat yang tidak ditakrifkan secara eksplisit?
Jawapan:
Ya, sokongan JavaScript untuk dinamik getter dan setter diperkenalkan dalam spesifikasi ES2015 melalui penggunaan proksi. Proksi mencipta objek pembalut yang memintas akses dan pengubahsuaian harta, membenarkan gelagat tersuai.
Pelaksanaan:
Berikut ialah contoh proksi yang menukar nilai sifat rentetan kepada huruf besar dan mengembalikan " hilang" untuk sifat yang tidak ditentukan:
<code class="js">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>
Penggunaan:
<code class="js">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 = updated" console.log(`proxy.example = ${proxy.example}`); // "proxy.example = UPDATED"</code>
Nota:
Sokongan proksi dipertimbangkan serasi merentas pelayar dan disokong oleh semua penyemak imbas moden utama.
Atas ialah kandungan terperinci Bolehkah Proksi JavaScript Mendayakan Pengambil & Penetap Dinamik untuk Mana-mana Harta?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!