Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Challenge: Implement Getters and Setters in a Class | Mastering JavaScript Classes and Inheritance
Advanced JavaScript Mastery

book
Challenge: Implement Getters and Setters in a Class

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.
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
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.
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
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

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 10
We use cookies to make your experience better!
some-alt