Kaedah JavaScript Object.defineProperty () menambah atau mengubah sifat yang ada pada objek dan mengembalikan objek.
Sintaks defineProperty()
kaedahnya adalah:
Object.defineProperty(obj, prop, descriptor)
Yang defineProperty()
kaedah, iaitu kaedah yang statik, dipanggil menggunakan Object
nama kelas.
defineProperty () Parameter
The defineProperty()
Cara mengambil masa dalam:
- obj - Objek untuk menentukan harta.
- prop - Nama atau
Symbol
harta yang akan ditentukan atau diubah suai. - deskriptor - Penerangan untuk harta yang ditentukan atau diubah suai.
Deskriptor harta benda yang terdapat dalam objek terdiri daripada dua jenis: deskriptor data dan deskriptor aksesor. Mereka boleh memiliki sifat pilihan berikut.
configurable
enumerable
Deskriptor data juga boleh mempunyai:
value
writable
Penerangan aksesori juga boleh mempunyai:
get
set
Nilai pulangan dari defineProperty ()
- Mengembalikan objek yang diteruskan ke fungsi.
Catatan:
- Secara lalai, nilai yang ditambah menggunakan
Object.defineProperty()
tidak berubah dan tidak dapat dikira. - Jika huraian yang mempunyai kedua-
value
,writable
,get
danset
kunci, ia dianggap sebagai penghurai data. Jika huraian yang mempunyai kedua-duavalue
atauwritable
danget
atauset
kunci, pengecualian dibuang.
Contoh: Menambah harta data ke objek
let obj = (); // with a data property descriptor Object.defineProperty(obj, "property1", ( value: 788, writable: true, enumerable: true, configurable: true, )); console.log(obj.property1); // 788 // with an accessor property descriptor Object.defineProperty(obj, "property2", ( get() ( console.log("Getting Value… "); return val; ), set(newVal) ( console.log("Setting Value… "); val = newVal; ), enumerable: true, configurable: true, )); obj.property2 = 6969; // Setting Value… console.log(obj.property2); // 6969
Pengeluaran
788 Menetapkan Nilai… Mendapatkan Nilai… 6969
Kami tidak dapat mencampurkan kedua-dua data dan deskriptor harta benda aksesori kerana akan menimbulkan kesalahan.
Untuk mengubah properti, writable
harta benda harus ada true
, jika tidak, ia tidak akan mengubah dan membuang kesalahan dalam mod yang ketat.
The enumerable
atribut harta mentakrifkan sama ada harta itu dipilih oleh Object.assign()
atau pengendali merebak.
The configurable
kawalan atribut pada masa yang sama sama ada harta itu boleh dipadamkan dari objek dan sama ada sifat-sifatnya (selain daripada value
dan writable
) boleh diubah.
Bacaan yang Disyorkan: Objek Javascript defineProperties ()