Pertanyaan Di mana objek deskriptor properti disimpan?


Saya tahu bahwa Anda dapat memperoleh objek deskriptor properti dari properti tertentu 'prop'dari objek tertentu obj dengan Object.getOwnPropertyDescriptor(obj,"prop");. Saya hanya bertanya-tanya: Di mana benda-benda ini disimpan? Apakah mereka disimpan secara internal di dalam suatu objek atau .... di tempat lain? Saya mencoba menemukannya di alat pengembang tetapi tidak berhasil.


6
2017-11-24 09:06


asal


Jawaban:


Objek keterangan properti tidak ada kecuali diminta secara eksplisit. Mereka dibuat ad-hoc ketika Anda panggilan Object.getOwnPropertyDescriptor. Jadi kode berikut:

var foo = {bar:'foo'}
Object.getOwnPropertyDescriptor(foo, 'bar') === Object.getOwnPropertyDescriptor(foo, 'bar');

Selalu evaluasi ke salah.

Jadi seperti yang kita lihat (baik kode dan spesifikasi), objek deskriptor properti tidak disimpan, tetapi dibuat sesuai permintaan.

Jadi dimana writable, configurable, value, get, set... atributtes disimpan? Spesifikasi tidak mengharuskan mereka terpapar kode pengguna ... Berikut ini adalah definisi C ++ untuk kelas V8 PropertyDescriptor - sepertinya setiap properti menempati satu byte.

Dan jika Anda ingin memeriksa apakah properti dapat ditulis, dikonfigurasi, atau serupa, konsol Firefox memungkinkan Anda melakukannya (tetapi hanya jika properti tidak dapat ditulis atau memiliki pengambil / penyetel): Firefox DevTools


1
2018-01-04 13:17