Menu
CoddyTech

Enkapsulasi

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan JavaScript di Coddy. Pelajaran 17 dari 56.

Enkapsulasi adalah proses menggabungkan data di dalam sebuah class menjadi satu unit.

Ini membantu membatasi akses langsung ke data class, sehingga kita dapat mencegah perubahan data yang tidak disengaja. 

Mari kita lihat enkapsulasi dalam contoh sederhana. Buat object dasar dengan property publik:

const user = {
  name: "John",
  email: "john@example.com"
};

Siapa pun dapat mengakses dan mengubah property ini secara langsung:

user.name = "Jane"; // Mudah diubah dari luar
console.log(user.email); // Mudah diakses dari luar

Pendekatan yang lebih terenkapsulasi menggunakan closure untuk menyembunyikan data:

function createUser(name, email) {
  // Variabel-variabel ini bersifat privat (terenkapsulasi)
  let userName = name;
  let userEmail = email;
  
  // Kembalikan object dengan method untuk berinteraksi dengan data privat
  return {
    getName: function() {
      return userName;
    },
    getEmail: function() {
      return userEmail;
    },
    setName: function(newName) {
      userName = newName;
    }
  };
}
const encapsulatedUser = createUser("John", "john@example.com");

Sekarang, untuk berinteraksi dengan data:

console.log(encapsulatedUser.getName()); // "John"
encapsulatedUser.setName("Jane");
console.log(encapsulatedUser.getName()); // "Jane"

// Tidak bisa mengakses data secara langsung
console.log(encapsulatedUser.userName); // undefined
challenge icon

Tantangan

Kamu diberi kode yang menggunakan enkapsulasi untuk melindungi data pengguna. Tugasmu adalah menambahkan method getAge() untuk mengakses usia.

Pengujian akan memeriksa:

  • method getAge() tersedia
  • Method tersebut mengembalikan usia yang benar
  • Informasi usia tetap privat

Output yang Diharapkan:

john_doe

25

Coba sendiri

import { createUser } from './createUser.js';

// Kode pengujian, jangan ubah
const user = createUser("john_doe", 25);
console.log(user.getUsername()); // Seharusnya menghasilkan output "john_doe"
console.log(user.getAge());      // Seharusnya menghasilkan output 25

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