Bagaimanakah Objek Proksi JavaScript boleh digunakan untuk melaksanakan getter dan setter dinamik?

Patricia Arquette
Lepaskan: 2024-11-02 22:10:03
asal
833 orang telah melayarinya

How can JavaScript's Proxy Object be used to implement dynamic getters and setters?

Melaksanakan Getters/Setter Dinamik dalam JavaScript

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan