Rumah > hujung hadapan web > tutorial js > Bolehkah Proksi JavaScript Mendayakan Pengambil & Penetap Dinamik untuk Mana-mana Harta?

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

Linda Hamilton
Lepaskan: 2024-11-02 02:58:30
asal
573 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!

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