Properti suatu objek di JavaScript memiliki tiga properti:
1.wrawit. Apakah properti ini dapat ditulis?
2. yang dapat ditanggung. Saat menggunakan pernyataan untuk/dalam, apakah properti akan disebutkan?
3. Konfigurasi. Apakah properti properti dapat dimodifikasi dan apakah properti dapat dihapus.
Dalam standar ecmascript 3, nilai -nilai dari tiga properti di atas benar dan tidak dapat diubah: properti dari objek yang baru dibuat dapat ditulis, dapat dihindari, dan dapat dihapus; Objek properti (deskriptor properti) untuk mengonfigurasi dan memodifikasi properti ini.
Jika informasi nilai properti juga digunakan sebagai atribut properti, properti dalam objek memiliki empat properti: nilai, dapat ditulis, dihiasi, dan dapat dikonfigurasi.
Untuk properti yang ditentukan oleh metode Getter and Setter, karena mereka tidak memiliki properti yang dapat ditulis (properti yang dapat ditulis tergantung pada apakah ada metode setter), properti ini juga memiliki empat properti: dapatkan, set, sebutkan, dapat dikonfigurasi dan dapat dikonfigurasi - dapatkan dan atur nilai nilai dari 'adalah fungsi'.
Dapatkan properti dari properti objek
Dalam standar ecmascript 5, informasi properti dari properti tertentu dari objek itu sendiri dapat diperoleh melalui objek.getOwnPropertyDescriptor ():
Salinan kode adalah sebagai berikut:
var o = {x: 1};
var a = objek.create (o);
ay = 3;
console.log (objek.getOwnPropertyDescriptor (a, "y")); // objek {konfigurasi = true, enumerable = true, writable = true, value = 3}
console.log (objek.getOwnPropertyDescriptor (a, "x")); // tidak ditentukan
Seperti yang Anda lihat, jika properti tidak ada atau properti mewarisi dari objek prototipe, tidak ditentukan dikembalikan.
Atur properti properti objek
Dalam standar ecmascript 5, sifat -sifat properti tertentu dari suatu objek itu sendiri dapat diatur melalui objek.defineproperty ():
Salinan kode adalah sebagai berikut:
Object.defineproperty (a, "y", {
Nilai: 3,
Tulisan: Benar,
Hancur: Salah,
Konfigurasi: Benar
});
console.log (a.propertyisenumerable ("y")); // false
Jika properti yang ditetapkan diwarisi dari objek prototipe, JavaScript akan membuat properti dengan nama yang sama dalam objek itu sendiri, yang konsisten dengan perilaku yang relevan dari operasi penugasan:
Salinan kode adalah sebagai berikut:
Object.defineproperty (a, "x", {
Nilai: 1,
Tulisan: Benar,
Hancur: Salah,
Konfigurasi: Benar
});
console.log (a.propertyisenumerable ("x")); // false
console.log (o.propertyisenumerable ("x")); // true
Selain memodifikasi properti properti, Anda juga dapat mengubah properti menjadi akses dengan Getter atau Setter:
Salinan kode adalah sebagai berikut:
Object.defineproperty (a, "y", {
get: function () {return 42;}
});
console.log (ay); // 42
Saat menggunakan Object.defineproperty (), nilai properti objek deskripsi properti dapat diabaikan sebagian.
Jika properti baru dibuat, semua nilai properti yang diabaikan salah atau tidak terdefinisi.
Jika properti sudah ada, semua nilai properti yang diabaikan tetap seperti mereka.
Atur properti properti objek dalam batch
Jika Anda perlu mengatur properti dari beberapa properti sekaligus, Anda dapat menggunakan pernyataan Object.DefineproPerties (). Pernyataan ini mengembalikan objek yang dimodifikasi.
Salinan kode adalah sebagai berikut:
Object.DefineproPerties (a, {
"y": {value: 79, writable: true, enumerable: true, configable: true},
"z": {value: 99, writable: true, enumerable: true, configable: true}
});
console.log (a); // objek {y = 79, z = 99}
Aturan Pengaturan Properti Properti Properti
Saat memodifikasi properti properti, aturan berikut harus diikuti. Jika aturan dilanggar, JavaScript akan melaporkan kesalahan TypeError:
Jika objek tidak dapat diperluas, Anda hanya dapat memodifikasi properti properti yang ada dan tidak dapat menambahkan properti baru.
Jika properti yang dapat dikonfigurasi properti salah, nilai -nilai properti yang dapat dikonfigurasi dan enumerable tidak dapat dimodifikasi. Jika properti didefinisikan oleh Getter dan Setter, metode Getter dan Setter tidak dapat dimodifikasi.
Jika properti dan properti yang dapat dikonfigurasi properti itu salah, nilai properti tidak dapat diubah. Jika properti yang dapat ditulis properti salah tetapi properti yang dapat dikonfigurasi benar, nilai properti masih dapat dimodifikasi.