Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ チャレンジ:クラスでゲッターとセッターを実装する | JavaScriptクラスと継承の習得
JavaScriptロジックとインタラクション

bookチャレンジ:クラスでゲッターとセッターを実装する

メニューを表示するにはスワイプしてください

課題

Car クラスにはプライベートな #mileage プロパティがあります。このプロパティへのアクセスと変更方法を制御するために、ゲッターとセッターを定義してください。

  1. マイレージのゲッターを定義: 現在のマイレージを取得するための mileage プロパティのゲッターを定義する;
  2. バリデーション付きマイレージのセッターを定義: 新しいマイレージ値を受け取る mileage プロパティのセッターを定義する。このセッターは以下を満たす必要があります:
    • 新しいマイレージが現在のマイレージより大きい場合のみ更新を許可する(マイレージは増加のみ可能);
    • 新しいマイレージが無効な場合は、"Invalid mileage update" をログに出力し、現在のマイレージを変更しない。
123456789101112131415161718192021222324252627
class Car { #mileage = 1000; // Initial private mileage // Getter for mileage _____ mileage() { return this.#_____; } // Setter for mileage with validation _____ mileage(newMileage) { _____ (_____ > this.#_____) { this.#_____ = newMileage; } _____ { console.log(_____); } } } // Testing const car1 = new Car(); console.log(car1.mileage); // Expected: 1000 car1.mileage = 1500; // Update mileage to 1500 console.log(car1.mileage); // Expected: 1500 car1.mileage = 900; // Attempt invalid mileage update, expected: Invalid mileage update
copy
  • 現在のマイレージを取得するために getmileage アクセサを定義;
  • set をパラメータとして受け取る mileagenewMileage アクセサを定義;
  • セッター内で、newMileage が現在のマイレージ(this.#mileage)より大きいかどうかを確認;
  • newMileage が有効な場合、#mileagenewMileage に更新;
  • newMileage が現在のマイレージ以下の場合、"Invalid mileage update" をログに出力し、マイレージを変更しない。
123456789101112131415161718192021222324252627
class Car { #mileage = 1000; // Initial private mileage // Getter for mileage get mileage() { return this.#mileage; } // Setter for mileage with validation set mileage(newMileage) { if (newMileage > this.#mileage) { this.#mileage = newMileage; } else { console.log('Invalid mileage update'); } } } // Testing const car1 = new Car(); console.log(car1.mileage); // Output: 1000 car1.mileage = 1500; // Update mileage to 1500 console.log(car1.mileage); // Output: 1500 car1.mileage = 900; // Attempt invalid mileage update, expected: Invalid mileage update
copy

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 1.  10

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 1.  10
some-alt