Dalam JavaScript, properti yang dapat diperluas objek digunakan untuk menunjukkan apakah properti baru diizinkan untuk ditambahkan secara dinamis dalam objek. Dalam standar ecmascript 3, semua objek dapat diperluas. Dalam standar ECMascript 5, semua objek masih dapat diperluas secara default, tetapi properti ini dapat diubah dengan pengaturan.
Untuk memeriksa apakah suatu objek dapat diperluas, Anda dapat menggunakan objek.isextensible () Pernyataan:
Salinan kode adalah sebagai berikut:
var o = {x: 1};
console.log (object.isextensible (o)); // true
Untuk membuat objek yang tidak dapat diperluas, Anda dapat menggunakan pernyataan objek.preventextensions ():
Salinan kode adalah sebagai berikut:
Object.preventextensions (o)
console.log (object.isextensible (o)); // false
Perlu dicatat bahwa karena tidak ada pernyataan operasi terbalik dari objek.
Lingkup Object.PreventExtensions () Pernyataan adalah objek itu sendiri, dan objek prototipe tidak terpengaruh. Jika suatu objek diatur ke non-ekstensible, properti masih dapat ditambahkan secara dinamis dalam objek prototipe, dan properti yang ditambahkan secara dinamis ini masih dapat diwarisi oleh objek.
Object.seal () dan Object.Freeze ()
Object.preventextensions () mencegah properti baru ditambahkan secara dinamis pada objek. Selain operasi ini, ada dua operasi yang lebih ketat dalam JavaScript untuk melindungi objek: objek.seal () dan objek.freeze ().
Fungsi objek.seal () adalah untuk mengatur properti yang dapat dikonfigurasi dari properti semua objek sendiri menjadi false berdasarkan objek.preventextensions (). Seperti Object.PreventExtensions () Operasi, Object.seal () tidak memiliki anti-operasi, sehingga objek tidak dapat dipulihkan setelah segel. Dalam JavaScript, Anda dapat menggunakan objek.issealed () untuk menanyakan apakah suatu objek telah disegel.
Fungsi objek.freeze () adalah untuk mengatur properti dari semua objek sebagai baca-hanya berdasarkan objek.seal (). Seperti Object.seal () dan Object.PreventExtensions () Operasi, Object.Freeze () tidak memiliki anti-operasi, sehingga objek tidak dapat dipulihkan setelah freenzen. Dalam JavaScript, Anda dapat menggunakan Object.isfrozen () untuk menanyakan apakah suatu objek telah dibebaskan.
Salinan kode adalah sebagai berikut:
console.log (objek.issealed (o)); // false
Objek.seal (o);
console.log (objek.issealed (o)); // true
console.log (object.isfrozen (o)); // false
Objek.freeze (o);
console.log (object.isfrozen (o)); // true
Apakah itu objek.preventextensions (), objek.seal () dan objek.freeze (), ruang lingkup tindakannya adalah objek itu sendiri, dan objek prototipe objek tidak akan terpengaruh.