カプセル化
CoddyのJavaScriptジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 17/56。
カプセル化とは、クラス内のデータを1つの単位にまとめるプロセスです。
これにより、クラスのデータに直接アクセスすることに制限を設けられ、最終的にはデータが誤って変更されるのを防ぐのに役立ちます。
簡単な例でencapsulationの動作を見てみましょう。公開プロパティを持つ基本的なobjectを作成します。
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 にアクセスするための getAge() method を追加するのがあなたの課題です。
テストで確認される内容:
getAge()method が存在すること- correct age を returns すること
- age info が remains private であること
期待される出力:
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オンラインコンパイラ