Rumah > Artikel > hujung hadapan web > Pengenalan kepada atribut boleh diperluaskan objek dalam kemahiran JavaScript_javascript
Dalam JavaScript, atribut boleh diperluaskan objek digunakan untuk menunjukkan sama ada sifat baharu dibenarkan untuk ditambah secara dinamik pada objek. Dalam standard ECMAScript 3, semua objek boleh dipanjangkan. Dalam standard ECMAScript 5, semua objek masih boleh dikembangkan secara lalai, tetapi atribut ini boleh diubah dengan menetapkannya.
Untuk bertanya sama ada objek boleh dipanjangkan, anda boleh menggunakan pernyataan Object.isExtensible():
Untuk menjadikan objek tidak boleh dipanjangkan, anda boleh menggunakan pernyataan Object.preventExtensions():
Perlu diingat bahawa oleh kerana tiada pernyataan operasi terbalik Object.preventExtensions(), sebaik sahaja objek ditetapkan kepada tidak boleh dilanjutkan, tidak ada cara untuk menetapkannya kepada boleh dilanjutkan semula.
Skop pernyataan Object.preventExtensions() ialah objek itu sendiri dan objek prototaip tidak terjejas. Jika objek ditetapkan sebagai tidak boleh dilanjutkan, sifat masih boleh ditambah secara dinamik pada objek prototaipnya, dan sifat yang ditambah secara dinamik ini masih boleh diwarisi oleh objek.
Object.seal() dan Object.freeze()
Object.preventExtensions() boleh menghalang sifat baharu daripada ditambah secara dinamik pada objek. Selain operasi ini, terdapat dua lagi operasi yang lebih ketat dalam JavaScript untuk melindungi objek: Object.seal() dan Object.freeze().
Fungsi Object.seal() adalah untuk menetapkan sifat boleh dikonfigurasikan bagi semua sifat objek sendiri kepada palsu berdasarkan Object.preventExtensions(). Seperti operasi Object.preventExtensions(), Object.seal() tidak mempunyai operasi terbalik, jadi setelah objek dimeterai, keadaannya tidak boleh dipulihkan. Dalam JavaScript, anda boleh menggunakan Object.isSealed() untuk bertanya sama ada objek telah dimeterai.
Fungsi Object.freeze() adalah untuk menetapkan sifat semua objek itu sendiri kepada baca sahaja berdasarkan Object.seal(). Seperti operasi Object.seal() dan Object.preventExtensions(), Object.freeze() tidak mempunyai operasi terbalik, jadi apabila objek dibekukan, keadaannya tidak boleh dipulihkan. Dalam JavaScript, anda boleh menggunakan Object.isFrozen() untuk bertanya sama ada objek telah dibekukan.
Sama ada Object.preventExtensions(), Object.seal() dan Object.freeze(), skopnya ialah objek itu sendiri dan objek prototaip objek tidak akan terjejas.