Metode JavaScript Object.defineProperty () menambah atau mengubah properti yang ada pada sebuah objek dan mengembalikan objek tersebut.
Sintaks dari defineProperty()
metode ini adalah:
Object.defineProperty(obj, prop, descriptor)
The defineProperty()
metode, menjadi metode statis, disebut menggunakan Object
nama kelas.
DefineProperty () Parameters
The defineProperty()
Metode mengambil di:
- obj - Objek yang akan digunakan untuk mendefinisikan properti.
- prop - Nama atau
Symbol
properti yang akan didefinisikan atau dimodifikasi. - deskriptor - Deskriptor untuk properti yang sedang ditentukan atau dimodifikasi.
Deskriptor properti yang ada dalam objek terdiri dari dua jenis: deskriptor data dan deskriptor pengakses. Mereka dapat memiliki properti opsional berikut.
configurable
enumerable
Deskriptor data juga dapat memiliki:
value
writable
Deskriptor pengakses juga dapat memiliki:
get
set
Kembalikan nilai dari defineProperty ()
- Mengembalikan objek yang diteruskan ke fungsi.
catatan:
- Secara default, nilai yang ditambahkan menggunakan
Object.defineProperty()
tidak dapat diubah dan tidak dapat dihitung. - Jika descriptor memiliki satu pun dari
value
,writable
,get
danset
kunci, diperlakukan sebagai deskriptor data. Jika deskriptor memiliki keduavalue
atauwritable
danget
atauset
kunci, pengecualian akan muncul.
Contoh: Menambahkan properti 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
Keluaran
788 Menetapkan Nilai… Mendapatkan Nilai… 6969
Kami tidak dapat mencampur data dan deskriptor properti pengakses karena akan menimbulkan kesalahan.
Untuk memodifikasi properti, properti objek writable
haruslah true
, jika tidak maka tidak akan mengubah dan memunculkan kesalahan dalam mode ketat.
The enumerable
Atribut properti mendefinisikan apakah properti diambil oleh Object.assign()
atau menyebar operator.
The configurable
kontrol atribut pada saat yang sama apakah properti dapat dihapus dari objek dan apakah atributnya (selain value
dan writable
) dapat diubah.
Bacaan yang Disarankan: Objek Javascript defineProperties ()