Dalam JavaScript, Anda dapat membaca dan menulis properti objek melalui operator titik "." atau operator braket "[]":
Salinan kode adalah sebagai berikut:
var o = {x: 1, y: 2};
Console.log (OX); // 1
console.log (o ["y"]); // 2
oy = 7;
console.log (o ["y"]); // 7
Perlu dicatat bahwa jika operator braket digunakan, tipe nilai dalam operator harus string, atau ekspresi yang dapat dikonversi menjadi string:
Salinan kode adalah sebagai berikut:
console.log (o [y]); // ReferenceError: y tidak didefinisikan
var v = "y";
console.log (o [v]); // 7
Tidak seperti bahasa Java, properti objek dalam JavaScript dapat ditambahkan atau dihapus secara dinamis. Saat menetapkan properti, jika properti tidak ada, JavaScript akan secara dinamis menambahkan properti ini ke objek:
Salinan kode adalah sebagai berikut:
oz = 99;
console.log (o); // objek {x = 1, y = 7, z = 99}
Membaca properti dalam rantai warisan prototipe
Semua objek dalam JavaScript memiliki objek prototipe prototipe dan mewarisi properti dari objek prototipe; Oleh karena itu, sifat -sifat suatu objek dalam JS dibagi menjadi dua kategori:
1. Properti yang dimiliki oleh objek itu sendiri ("properti sendiri").
2. Properti diwarisi dari objek prototipe.
Saat membaca properti suatu objek, aturan yang diikuti adalah sebagai berikut:
1. Cari properti yang perlu dibaca dari koleksi properti objek sendiri ("Properti Sendiri"); Jika dapat dicari, itu akan langsung membaca properti dan mengembalikan nilainya.
2. Jika properti tidak dapat dicari dari koleksi properti objek sendiri ("Properti Sendiri"), maka terus mencari dari rantai prototipe prototipe objek hingga properti dicari dan nilainya dikembalikan.
3. Jika properti tidak dapat dicari dalam koleksi properti objek sendiri ("properti sendiri") dan properti tidak dapat dicari di semua objek prototipe objek, maka tidak ditentukan dikembalikan.
Tulis properti dalam rantai warisan prototipe
Saat menulis ke properti objek JavaScript, aturan yang diikuti adalah sebagai berikut:
1. Jika objek itu sendiri memiliki properti dan properti dapat ditulis, tulis nilai baru ke properti. Jika properti hanya baca, kesalahan dilaporkan.
2. Jika objek itu sendiri tidak memiliki properti dan tidak ada di semua objek prototipe, tambahkan properti ini ke objek.
3. Jika objek itu sendiri tidak memiliki properti, tetapi properti ada dalam objek prototipe dan dapat ditulis, maka JS akan membuat properti ini di objek; Artinya, objek menimpa properti dalam objek prototipe. Nilai properti ini dalam objek prototipe tetap tidak berubah.
4. Jika objek itu sendiri tidak memiliki properti, tetapi properti ada di objek prototipe dan hanya baca, kesalahan akan dilaporkan.
5. Jika objek itu sendiri tidak memiliki properti, tetapi metode setter dari properti ada dalam objek prototipe, maka JS akan memanggil metode setter dalam objek prototipe. Perlu dicatat bahwa ketika menjalankan metode setter, jika penugasan variabel terlibat, operasi penugasan akan bertindak pada objek itu sendiri, dan objek prototipe tidak akan diubah. Untuk perilaku ini, dapat dipahami sebagai: objek mewarisi fungsi setter dari prototipe dan menjalankannya.
Dari aturan di atas, kita dapat menemukan bahwa jika operasi penugasan ke properti berhasil, maka objek itu sendiri akan selalu dimodifikasi pada akhirnya, dan objek prototipe prototipe tidak akan diubah.