Kata Kunci get dan set
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan JavaScript di Coddy. Pelajaran 43 dari 56.
Getter dan setter adalah method khusus yang tampak seperti property, tetapi sebenarnya merupakan fungsi. Keduanya memberimu kendali atas cara property diakses dan diubah.
Mari buat class Person sederhana:
class Person {
constructor(firstName, lastName) {
this._firstName = firstName;
this._lastName = lastName;
}
// Getter untuk fullName
get fullName() {
return `${this._firstName} ${this._lastName}`;
}
// Setter untuk fullName
set fullName(value) {
const parts = value.split(' ');
this._firstName = parts[0];
this._lastName = parts[1];
}
}Garis bawah pada _firstName dan _lastName adalah konvensi penamaan: ini memberi tahu developer lain bahwa property ini bersifat internal dan sebaiknya dibaca serta diubah melalui getter dan setter, bukan secara langsung. JavaScript tidak mewajibkan aturan ini.
Sekarang kita bisa menggunakan getter dan setter ini seperti property:
// Buat Person baru
const person = new Person('John', 'Doe');
// Gunakan getter
console.log(person.fullName); // output: John Doe
// Gunakan setter
person.fullName = 'Jane Smith';
// Setter telah memperbarui property internal
console.log(person.fullName); // output: Jane SmithPerhatikan bahwa kita tidak memanggil method ini dengan tanda kurung. Method ini berperilaku seperti property, tetapi menjalankan kode saat diakses atau diubah.
Tantangan
Kamu diberi sebuah class User dengan property age. Tugasmu adalah menambahkan getter dan setter untuk age yang:
- Getter
get age(): mengembalikan usia yang tersimpan - Setter
set age(newAge): memvalidasi bahwa usia berada di antara 0 dan 120- Jika valid (0-120): simpan di
this._age - Jika tidak valid: jangan ubah dan catat
"Invalid age!"
- Jika valid (0-120): simpan di
Coba sendiri
import { User } from './user.js';
// Kode pengujian, jangan ubah
const user = new User("Alice", 25);
console.log(user.age); // Seharusnya menghasilkan output 25
user.age = 30;
console.log(user.age); // Seharusnya menghasilkan output 30
user.age = 150; // Seharusnya menampilkan "Invalid age!"
console.log(user.age); // Seharusnya tetap menghasilkan output 30 (tidak berubah)
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Object dan Kata Kunci this
Tinjauan Singkat: objectMenambahkan method ke objectMemahami Kata Kunci thisFungsi KonstruktorKata Kunci newTantangan Rangkuman7Pewarisan & Kata Kunci extends
PewarisanHubungan "is-a"Kata Kunci extendsmethod super()Mewarisi property & methodTantangan Rangkuman2Mengatur Kode
Apa itu module?Mengekspor dengan exportMengimpor dengan importEkspor default vs. ekspor bernama8Mengatur Kode OOP
Mengatur class ke dalam module11Proyek: Perender Bentuk
Penyiapan: class Shape & EksporPewarisan class CircleOverride & Method LuasPenghitung Shape Statis14Sistem Manajemen Perpustakaan
Merancang PerpustakaanClass Book dengan CompositionValidasi Penulis Buku9Method dan property Statis
Level class vs. level instanceProperty StatisMethod Utilitas StatisTantangan Rangkuman12Getter dan Setter
Kata Kunci get dan setproperty yang DihitungValidasi dan Efek SampingTantangan RangkumanLatihan sendiri: Compiler JavaScript online