Object mengumpulkan beberapa data yang saling terkait ke dalam satu variabel. Tiap data disimpan sebagai properti: pasangan nama properti (key) dan nilainya. Mirip KTP: ada label "Nama", "Umur", dan isi di sebelahnya.
🧪 Tebakan cepat: object disimpan di variabel
const. Isinya masih bisa diubah gak? Tebak dulu, jawabannya ada di bagian "Mengubah dan menambah properti".
Bikin object dan membaca propertinya
const siswa = {
nama: "Sari",
umur: 16,
jurusan: "IPS"
};
console.log(siswa.nama); // Sari
console.log(siswa["jurusan"]); // IPS
{dan}membuka dan menutup object-nya.nama: "Sari"adalah satu properti: nama properti, titik dua:, lalu nilainya. Di dalam object pakai:, bukan=.- Koma
,memisahkan properti, bukan titik koma. Properti terakhir boleh tanpa koma. - Nilainya bebas tipe: string pakai kutip, number tanpa kutip.
;setelah}menutup seluruh perintahconst siswa = ....
Ada dua cara membaca properti:
- Dot notation:
siswa.nama, yaitu nama variabel, titik, nama properti. - Bracket notation:
siswa["jurusan"], nama properti sebagai teks di dalam kurung siku, lengkap dengan kutip. Cara ini wajib kalau nama propertinya disimpan di variabel atau mengandung spasi.
Properti yang gak ada hasilnya undefined, bukan error.
Mengubah dan menambah properti
siswa.umur = 17;
siswa.kota = "Bogor";
console.log(Object.keys(siswa)); // ["nama", "umur", "jurusan", "kota"]
siswa.umur = 17;mengganti nilai properti yang sudah ada.siswa.kota = "Bogor";menambah properti baru, karenakotabelum ada.Object.keys(siswa)memberi array berisi semua nama properti, urut sesuai waktu ditambahkan.
Jawaban tebakan: bisa. const cuma mengunci variabelnya, jadi siswa = {} ditolak dengan TypeError, tapi isi object-nya tetap boleh diubah. Satu lagi: let dan const cuma buat bikin variabel baru, jadi let siswa.kota = "Bogor" itu error.
Object sebagai input fungsi
Fungsi adalah blok kode bernama yang baru jalan waktu dipanggil. Fungsi bisa menerima object, lalu menyusun hasil dari propertinya:
function kartuNama(orang) {
return "Nama: " + orang.nama + ", kota: " + orang.kota;
}
const teman = { nama: "Rina", kota: "Medan" };
console.log(kartuNama(teman)); // Nama: Rina, kota: Medan
function kartuNama(orang) { ... }bikin fungsi bernamakartuNama. Kodenya ditulis di antara{dan}.orangadalah parameter, yaitu nama untuk nilai yang dikirim waktu fungsi dipanggil. Di dalam fungsi, propertinya dibaca denganorang.namadanorang.kota.returnmengembalikan hasil ke pemanggil. Nilai setelahreturnjadi hasil fungsinya.+menyambung teks. Spasi di dalam kutip ikut jadi bagian hasil:"Nama: "punya spasi setelah titik dua.kartuNama(teman)memanggil fungsinya dan mengirim objectteman, jadi di dalam fungsiorangberisiteman.
Datanya selalu datang lewat parameter. Jangan tulis isi object di dalam fungsi, dan jangan tulis "Rina" langsung di teksnya: fungsi yang sama harus jalan buat orang lain juga.
💡 Fungsi yang ditulis di dalam object disebut method. Contohnya
sapa() { return "Halo, saya " + this.nama; }di dalamsiswa, lalu dipanggilsiswa.sapa(). Di dalam method,thisberarti object pemiliknya. Di fungsi biasa kayakkartuNama,thisgak menunjuk ke object kirimanmu, jadi pakai nama parameternya:orang.nama.
⚠️ Jebakan yang sering ketemu
=atau;di dalam object.{ nama = "Budi"; umur = 17 }itu error. Tulis{ nama: "Budi", umur: 17 }.- Bracket tanpa kutip.
siswa[nama]mencari variabel bernamanama, bukan properti"nama". Tulissiswa["nama"]. - Spasi lebih di teks hasil.
" Halo"dengan spasi di depan beda dengan"Halo". Cek spasi di awal dan akhir tiap potongan teks.
TL;DR: Object menyimpan data terkait sebagai pasangan nama: nilai di dalam { }, dipisah koma. Baca dengan obj.nama atau obj["nama"], ubah atau tambah dengan obj.kota = "Bogor". Object di const tetap bisa diubah isinya, cuma variabelnya yang terkunci. Object.keys(obj) memberi daftar nama propertinya. Fungsi yang menerima object membaca propertinya lewat parameter (orang.nama) dan mengembalikan hasil dengan return.