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
some-alt