Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Challenge: Managing Properties with Getters and Setters | Classes
Advanced JavaScript Mastery
course content

Course Content

Advanced JavaScript Mastery

Advanced JavaScript Mastery

1. Classes
2. DOM Manipulation
3. Events and Event Handling
4. Asynchronous JavaScript and APIs

bookChallenge: Managing Properties with Getters and Setters

Task

You are working within a Car class that has a private #mileage property. Your task is to define getters and setters for this property to control how it’s accessed and modified.

  1. Define Getter for Mileage: Define a getter for the mileage property to retrieve the current mileage;
  2. Define Setter for Mileage with Validation: Define a setter for the mileage property that accepts a new mileage value. This setter should:
    • Only allow updating if the new mileage is greater than the current mileage (mileage can only increase);
    • If the new mileage is invalid, log "Invalid mileage update" and do not change the current mileage.
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
  • Define a get accessor for mileage to retrieve the current mileage;
  • Define a set accessor for mileage that takes newMileage as a parameter;
  • In the setter, check if newMileage is greater than the current mileage (this.#mileage);
  • If newMileage is valid, update #mileage to newMileage;
  • If newMileage is not greater than the current mileage, log "Invalid mileage update" and do not change the mileage.
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

Everything was clear?

How can we improve it?

Thanks for your feedback!

Section 1. Chapter 10
We're sorry to hear that something went wrong. What happened?
some-alt