캡슐화
Coddy JavaScript 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 56개 중 17번째.
캡슐화는 클래스 내부의 데이터를 하나의 단위로 결합하는 과정입니다.
이를 통해 클래스 데이터에 직접 액세스하는 것을 제한할 수 있으며, 궁극적으로 데이터가 실수로 수정되는 것을 방지할 수 있습니다.
간단한 예제로 캡슐화가 실제로 어떻게 작동하는지 살펴봅시다. 공개 속성을 가진 기본 객체를 만들어 보세요:
const user = {
name: "John",
email: "john@example.com"
};누구나 이러한 속성에 직접 액세스하고 수정할 수 있습니다:
user.name = "Jane"; // 외부에서 쉽게 수정할 수 있음
console.log(user.email); // 외부에서 쉽게 접근할 수 있음더 캡슐화된 접근 방식은 클로저를 사용하여 데이터를 숨깁니다:
function createUser(name, email) {
// 이 변수들은 비공개(캡슐화)입니다
let userName = name;
let userEmail = email;
// 비공개 데이터와 상호작용하는 메서드가 있는 객체를 반환합니다
return {
getName: function() {
return userName;
},
getEmail: function() {
return userEmail;
},
setName: function(newName) {
userName = newName;
}
};
}
const encapsulatedUser = createUser("John", "john@example.com");이제 데이터와 상호 작용하려면 다음과 같이 합니다:
console.log(encapsulatedUser.getName()); // "John"
encapsulatedUser.setName("Jane");
console.log(encapsulatedUser.getName()); // "Jane"
// 데이터에 직접 접근할 수 없음
console.log(encapsulatedUser.userName); // undefined챌린지
user data를 보호하기 위해 캡슐화를 사용하는 코드가 주어졌습니다. age에 access할 수 있도록 getAge() method를 추가하는 것이 과제입니다.
Tests will check:
getAge()method가 존재하는지 확인합니다- correct age를 반환하는지 확인합니다
- age info가 private으로 유지되는지 확인합니다
Expected Output:
john_doe
25
직접 해보기
import { createUser } from './createUser.js';
// 테스트 코드 - 수정하지 마세요
const user = createUser("john_doe", 25);
console.log(user.getUsername()); // "john_doe"를 출력해야 합니다
console.log(user.getAge()); // 25를 출력해야 합니다
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
객체 지향 프로그래밍의 모든 레슨
직접 연습해 보세요: 온라인 JavaScript 컴파일러