Rumah  >  Artikel  >  hujung hadapan web  >  Pengenalan kepada atribut boleh diperluaskan objek dalam kemahiran JavaScript_javascript

Pengenalan kepada atribut boleh diperluaskan objek dalam kemahiran JavaScript_javascript

WBOY
WBOYasal
2016-05-16 16:23:181177semak imbas

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():


Salin kod Kod adalah seperti berikut:

var o = {x:1};
console.log(Object.isExtensible(o));//true


Untuk menjadikan objek tidak boleh dipanjangkan, anda boleh menggunakan pernyataan Object.preventExtensions():


Salin kod Kod adalah seperti berikut:

Object.preventExtensions(o)
console.log(Object.isExtensible(o));//false


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.


Salin kod Kod adalah seperti berikut:

console.log(Object.isSealed(o));//false
Object.seal(o);
console.log(Object.isSealed(o));//true
console.log(Object.isFrozen(o));//false
Object.freeze(o);
console.log(Object.isFrozen(o));//true


Sama ada Object.preventExtensions(), Object.seal() dan Object.freeze(), skopnya ialah objek itu sendiri dan objek prototaip objek tidak akan terjejas.

Kenyataan:
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