ECMAScript 5 memperkenalkan metode Objek baru ke Javascript. Diantaranya Obyek. freeze(), Objek. segel(), Objek. metode preventExtensions() akan dibahas dalam perbandingan satu sama lain
Sebelum memahami arti dari masing-masing metode, penting untuk mengetahui struktur objek dasar
Struktur ObjekObjek adalah tipe data Javascript yang dapat mewakili entitas yang berisi properti atau perilaku/metode tertentu. Properti ini dapat diubah atau dihapus atau properti baru dapat ditambahkan ke objek
Ada dua jenis properti dalam sebuah objek
Properti data — Properti objek normal yang ditentukan pada objek
Properti aksesor — Fungsi yang memungkinkan mendapatkan dan menetapkan nilai properti objek. Cukup metode pengambil dan penyetel. Properti ini dapat dikenali sebagai get dan set di depan nama properti
Contoh
let person = {firstName: "James",
lastName: "Bond",
get fullName() {
return `${this.firstName} ${this.lastName}`;
},
set fullName(name) {
[this.firstName, this.lastName] = name.split(" ");
}
};
// set fullName is executed with the given name value.
person.fullName = "Jane Iyer";
console.log(person.firstName); // Jane
console.log(person.lastName); // Iyer
Objek apa pun yang kami buat mewarisi properti dari konstruktor Objek JavaScript. Obyek. prototipe adalah salah satu properti yang diwarisi oleh objek semacam itu. Dengan menggunakan properti prototype kita dapat menambahkan properti atau metode baru ke semua objek yang ada. Dapat memodifikasi apa yang murni dimiliki oleh objek tanpa mewarisi dari Objek tersebut. prototipe
Contoh
let person = {firstName: "James",
lastName: "Bond"
}_
Properti (properti data) memiliki nama dan nilai yang ditetapkan sebagai pasangan nilai kunci. Selain itu, setiap properti memiliki beberapa meta data yang dapat mengontrol status/nilainya
enumerable — Nilai Boolean benar/salah. Jika disetel ke properti true dapat disebutkan/didaftarkan dalam loop. Jika tidak, tidak
dapat dikonfigurasi — nilai Boolean benar/salah. Jika disetel ke properti true dapat dikonfigurasi ulang. Jika tidak, tidak
writable — Nilai Boolean benar/salah. Jika disetel ke properti true dapat diubah. Jika tidak, tidak
Secara default semua properti dapat dibaca. Bergantung pada metadata di atas, propertinya dapat dimutasi
Sebaliknya, properti Accessor tidak memiliki nilai. Mereka telah mendapatkan, mengatur fungsi yang mengontrol aksesibilitas properti
get — Fungsi yang tidak memiliki argumen dan dipanggil saat membaca properti
set — Fungsi yang memiliki argumen tunggal dan dipanggil pada set properti
enumerable — Nilai Boolean benar/salah. Jika disetel ke properti true dapat disebutkan/didaftarkan dalam loop. Jika tidak, tidak
dapat dikonfigurasi — nilai Boolean benar/salah. Jika disetel ke properti true dapat dikonfigurasi ulang. Jika tidak, tidak
Tidak ada yang dapat ditulisi untuk properti accessor
Obyek. membekukan()Obyek. freeze() cukup mengubah objek yang diteruskan sebagai argumen menjadi keadaan beku. Objek yang dipanggil dengan metode ini tidak dapat memiliki perubahan lebih lanjut
Contoh
Tidak dapat menambahkan properti baru
Tidak dapat menghapus properti yang ada
Tidak dapat mengubah nilai properti yang ada
Tidak dapat mengonfigurasi ulang properti yang ada. dapat ditulis dan dikonfigurasi disetel ke false
Tidak dapat mengubah prototipenya
Mencoba melakukan perubahan apa pun yang disebutkan di atas setelah objek dibekukan akan gagal dan akan menimbulkan kesalahan dalam mode ketat
Obyek. isFrozen() adalah metode Objek untuk memeriksa apakah suatu objek dibekukan dengan meneruskan objek sebagai argumen
Contoh
Object.isFrozen(person)Objek. segel()Obyek. seal() cukup mengubah objek yang diteruskan sebagai argumen menjadi keadaan tersegel. Objek yang dipanggil dengan metode ini tidak dapat memiliki properti baru yang ditambahkan. Tapi itu bisa mengubah nilai properti yang ada selama metadata yang dapat ditulis itu benar
Contoh
Object.seal(person)_Tidak dapat menambahkan properti baru
Tidak dapat menghapus properti yang ada
Tidak dapat mengonfigurasi ulang properti yang ada
Tidak dapat mengonversi properti data menjadi properti pengakses atau sebaliknya
Secara default, objek dapat diperluas dalam arti bahwa properti baru dapat ditambahkan. Mencoba melakukan perubahan apa pun yang disebutkan di atas setelah objek disegel akan gagal dan akan menimbulkan kesalahan dalam mode ketat
Obyek. isSealed() adalah metode Objek untuk memeriksa apakah suatu objek disegel dengan meneruskan objek sebagai argumen
Contoh
Object.isSealed(person)Objek. preventExtensions()Obyek. preventExtensions() cukup mengonversi objek yang diteruskan sebagai argumen menjadi status yang tidak dapat diperluas. Objek yang dipanggil dengan metode ini tidak dapat memiliki properti baru yang ditambahkan. Metode ini mewarisi fungsionalitas dari objek supersetnya. segel. Oleh karena itu, ini dapat mengubah nilai properti yang ada selama metadata yang dapat ditulis benar. Berbeda dengan objek yang disegel, objek yang tidak dapat diperluas dapat dihapus atau dikonfigurasi ulang
Contoh
Object.preventExtensions(person)_Mencoba menambahkan properti baru setelah objek tidak dapat diperluas akan gagal dan akan menimbulkan kesalahan dalam mode ketat
Obyek. isExtensible() adalah metode Objek untuk memeriksa apakah suatu objek dapat diperluas dengan meneruskan objek sebagai argumen
Contoh
Object.isExtensible(person)Catatan. Objek yang berdiri sebagai properti di dalam objek atau objek dalam/anak dari suatu objek dapat dimodifikasi kecuali ada yang disegel/dibekukan secara terpisah. Dengan kata lain bahwa pembekuan/segel objek mengontrol setiap perubahan pada properti objek secara dangkal, artinya referensi properti langsung tidak dapat diubah. Tapi properti bersarang di dalam objek properti objek langsung dapat diubah