Menu
CoddyTech

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 Smith

Perhatikan bahwa kita tidak memanggil method ini dengan tanda kurung. Method ini berperilaku seperti property, tetapi menjalankan kode saat diakses atau diubah.

challenge icon

Tantangan

Kamu diberi sebuah class User dengan property age. Tugasmu adalah menambahkan getter dan setter untuk age yang:

  1. Getter get age(): mengembalikan usia yang tersimpan
  2. 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!"

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)

quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler JavaScript online