Bolehkah Proksi JavaScript Mendayakan Pengambil & Penetap Dinamik untuk Mana-mana Harta?

Linda Hamilton
Lepaskan: 2024-11-02 02:58:30
asal
454 orang telah melayarinya

Can JavaScript Proxies Enable Dynamic Getters & Setters for Any Property?

Melaksanakan Getter dan Setters Dinamik dalam JavaScript

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

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

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!

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