JavaScript - ES5 Object Methods

Hai sana, para ahli JavaScript masa depan! Hari ini, kita akan meluncur ke dunia magis metode Object ES5. Jangan khawatir jika Anda baru belajar programming - saya akan menjadi panduan ramah Anda dalam perjalanan ini, dan kita akan bergerak langkah demi langkah. Pada akhir panduan ini, Anda akan dapat memanipulasi objekseperti seorang ahli!

JavaScript - ES5 Object Methods

Metode Object ES5 JavaScript

Sebelum kita mulai, mari singkatkan apa itu objek di JavaScript. Pikirkan objek sebagai wadah yang menyimpan informasi yang berkaitan. Misalnya, objek "mobil" mungkin memiliki properti seperti warna, merek, dan tahun.

let mobil = {
warna: "merah",
merek: "Toyota",
tahun: 2020
};

Sekarang, ES5 memperkenalkan beberapa metode yang kuat untuk bekerja dengan objek ini. Mari kita jelajahi satu per satu!

Metode JavaScript Object.create()

Metode Object.create() memungkinkan kita untuk membuat objek baru menggunakan objek yang ada sebagai prototype. Itu seperti mengatakan, "Hai JavaScript, buatkan saya objek baru yang mewarisi dari objek ini!"

let hewan = {
buatSuara: function() {
console.log("Suara hewan generik");
}
};

let anjing = Object.create(hewan);
anjing.buatSuara(); // Output: Suara hewan generik

anjing.bark = function() {
console.log("Woof woof!");
};

anjing.bark(); // Output: Woof woof!

Dalam contoh ini, kita membuat objek anjing yang mewarisi dari objek hewan. anjing dapat menggunakan metode buatSuara dari hewan, tetapi juga memiliki metode bark sendiri.

Metode JavaScript Object.defineProperty()

Object.defineProperty() memungkinkan kita untuk menambahkan atau mengubah properti objek. Itu seperti menambahkan fitur baru ke mobil Anda setelah Anda membelinya!

let orang = {};

Object.defineProperty(orang, "nama", {
value: "John",
writable: false,
enumerable: true,
configurable: true
});

console.log(orang.nama); // Output: John
orang.nama = "Jane"; // Ini tidak akan mengubah nama
console.log(orang.nama); // Output: John

Di sini, kita menambahkan properti nama ke objek orang. Kita mensetnya sebagai non-writable, yang berarti kita tidak dapat mengubah nilainya setelah ditetapkan.

Metode JavaScript Object.defineProperties()

Object.defineProperties() adalah seperti defineProperty(), tapi dalam bentuk yang lebih kuat! Itu memungkinkan kita untuk mendefinisikan beberapa properti sekaligus.

let buku = {};

Object.defineProperties(buku, {
judul: {
value: "The Great Gatsby",
writable: true
},
pengarang: {
value: "F. Scott Fitzgerald",
writable: false
}
});

console.log(buku.judul); // Output: The Great Gatsby
console.log(buku.pengarang); // Output: F. Scott Fitzgerald

buku.judul = "Gatsby"; // Ini bekerja
buku.pengarang = "Scott"; // Ini tidak bekerja

console.log(buku.judul); // Output: Gatsby
console.log(buku.pengarang); // Output: F. Scott Fitzgerald

Dalam contoh ini, kita mendefinisikan dua properti untuk objek buku dalam satu langkah. Properti judul writable, tetapi pengarang tidak.

Metode JavaScript Object.getOwnPropertyDescriptor()

Metode ini memungkinkan kita untuk mendapatkan deskripsi properti. Itu seperti meminta spesifikasi fitur tertentu mobil Anda.

let mobil = {
merek: "Toyota"
};

let deskripsi = Object.getOwnPropertyDescriptor(mobil, "merek");

console.log(deskripsi);
// Output:
// {
//   value: "Toyota",
//   writable: true,
//   enumerable: true,
//   configurable: true
// }

Di sini, kita mendapatkan deskripsi properti merek dari objek mobil. Itu memberitahu kita nilai dan apakah properti itu writable, enumerable, dan configurable.

Metode JavaScript Object.getOwnPropertyNames()

Metode ini mengembalikan array dari semua properti ( enumerabel atau tidak ) yang ditemukan secara langsung dalam objek yang diberikan. Itu seperti mendapatkan daftar semua fitur mobil Anda, bahkan yang tersembunyi!

let orang = {
nama: "John",
umur: 30
};

Object.defineProperty(orang, "ssn", {
value: "123-45-6789",
enumerable: false
});

console.log(Object.getOwnPropertyNames(orang));
// Output: ["nama", "umur", "ssn"]

Meskipun kita membuat ssn sebagai non-enumerable, getOwnPropertyNames() masih menampilkan nya dalam daftar.

Metode JavaScript Object.getPrototypeOf()

Metode ini mengembalikan prototype objek yang ditentukan. Itu seperti bertanya, "Siapa orang tua Anda?"

let hewan = {
makan: true
};

let kelinci = Object.create(hewan);

console.log(Object.getPrototypeOf(kelinci) === hewan); // Output: true

Di sini, kita menegaskan bahwa prototype kelinci adalah objek hewan.

Metode JavaScript Object.keys()

Object.keys() mengembalikan array dari semua nama properti yang dapat dienumerasikan milik objek yang diberikan. Itu seperti mendapatkan daftar semua fitur tampak mobil Anda.

let mobil = {
merek: "Toyota",
model: "Corolla",
tahun: 2020
};

console.log(Object.keys(mobil));
// Output: ["merek", "model", "tahun"]

Metode ini hanya mengembalikan properti yang dapat dienumerasikan, tidak seperti getOwnPropertyNames() yang mengembalikan semua properti.

Metode JavaScript Object.freeze()

Object.freeze() membekukan objek. Objek yang dibekukan tidak dapat lagi diubah. Itu seperti memasukkan mobil Anda di dalam blok es - Anda tidak dapat menambahkan, menghapus, atau memodifikasi propertinya!

let mobil = {
merek: "Toyota",
model: "Corolla"
};

Object.freeze(mobil);

mobil.tahun = 2020; // Ini tidak akan bekerja
mobil.merek = "Honda"; // Ini juga tidak akan bekerja

console.log(mobil); // Output: { merek: "Toyota", model: "Corolla" }

Setelah membekukan objek mobil, kita tidak dapat menambahkan properti tahun atau mengubah merek.

Metode JavaScript Object.seal()

Object.seal() menutup objek, mencegah properti baru ditambahkan dan menandai semua properti yang ada sebagai non-configurable. Itu seperti menutup mobil Anda - Anda tidak dapat menambahkan fitur baru, tetapi Anda masih dapat memodifikasi yang ada.

let orang = {
nama: "John",
umur: 30
};

Object.seal(orang);

orang.kelamin = "Pria"; // Ini tidak akan bekerja
orang.umur = 31; // Ini bekerja

delete orang.nama; // Ini tidak akan bekerja

console.log(orang); // Output: { nama: "John", umur: 31 }

Kita dapat mengubah umur, tetapi kita tidak dapat menambahkan kelamin atau menghapus nama.

Metode JavaScript Object.isFrozen()

Metode ini menentukan apakah objek dibekukan. Itu seperti memeriksa apakah mobil Anda benar-benar terjebak di dalam blok es!

let mobil = {
merek: "Toyota"
};

console.log(Object.isFrozen(mobil)); // Output: false

Object.freeze(mobil);

console.log(Object.isFrozen(mobil)); // Output: true

Metode JavaScript Object.isSealed()

Seperti isFrozen(), metode ini memeriksa apakah objek ditutup.

let orang = {
nama: "John"
};

console.log(Object.isSealed(orang)); // Output: false

Object.seal(orang);

console.log(Object.isSealed(orang)); // Output: true

Metode JavaScript Object.preventExtensions()

Metode ini mencegah penambahan properti baru ke objek. Itu seperti menaruh tanda "Tidak ada Fitur Baru" di mobil Anda.

let mobil = {
merek: "Toyota"
};

Object.preventExtensions(mobil);

mobil.model = "Corolla"; // Ini tidak akan bekerja

console.log(mobil); // Output: { merek: "Toyota" }

Setelah mencegah ekstensi, kita tidak dapat menambahkan properti model.

Metode JavaScript Object.isExtensible()

Metode ini menentukan apakah objek dapat diperluas (apaakah properti baru dapat ditambahkan kepadanya).

let mobil = {
merek: "Toyota"
};

console.log(Object.isExtensible(mobil)); // Output: true

Object.preventExtensions(mobil);

console.log(Object.isExtensible(mobil)); // Output: false

Berikut ini adalah rangkuman dari semua metode yang kita pelajari:

Metode Deskripsi
Object.create() Membuat objek baru dengan prototype yang ditentukan dan properti
Object.defineProperty() Menambahkan properti yang dinamai sesuai deskripsi ke objek
Object.defineProperties() Mendefinisikan properti baru atau memodifikasi properti yang ada secara langsung di objek
Object.getOwnPropertyDescriptor() Mengembalikan deskripsi properti milik objek
Object.getOwnPropertyNames() Mengembalikan array properti ( enumerabel atau tidak ) yang ditemukan secara langsung di objek
Object.getPrototypeOf() Mengembalikan prototype objek yang ditentukan
Object.keys() Mengembalikan array nama properti yang dapat dienumerasikan milik objek
Object.freeze() Membekukan objek: kode lain tidak dapat menghapus atau mengubah propertinya
Object.seal() Menutup objek, mencegah penambahan properti baru dan menandai semua properti yang ada sebagai non-configurable
Object.isFrozen() Menentukan apakah objek dibekukan
Object.isSealed() Menentukan apakah objek ditutup
Object.preventExtensions() Mencegah penambahan properti baru ke objek
Object.isExtensible() Menentukan apakah objek dapat diperluas

Dan begitu saja! Anda baru saja mengambil tur besar di dunia metode Object ES5. Ingat, latihan membuat ahli, jadi jangan ragu untuk mencoba metode ini dalam kode Anda sendiri. Selamat belajar, ahli JavaScript masa depan!

Credits: Image by storyset