getters and setters javascript classes code example

Example 1: javascript class getter setter

// *** JS Class GETTER / SETTER (+split)

	class Person {
        constructor(firstname, lastname) {
            this.firstname = firstname;
            this.lastname = lastname;
        }
        // getters => access properties
        // setters => change or mutate them
        get fullName() {
            return `Hello ${this.firstname} ${this.lastname}`;
        }
        set fullName(space) {
            const parts = space.split(' ');
            this.firstname = parts[0];
            this.lastname = parts[1];
        }
    }
    let run = document.getElementById("run");
    run.addEventListener('click', () => {
        let john = new Person('John', 'Connor');
        console.log(john.fullName);
        john.fullName = 'Billy Butcher';
        console.log(john.firstname + ' ' + john.lastname);
      	//console.log(`${john.firstname} ${john.lastname}`); same output
      // => has to be john.firstname otherwise undefined 
    }) 
// output => Hello John Connor | Billy Butcher

Example 2: getters and setters javascript classes

// ES6 get and set
class Person {
  constructor(name) {
    this._name = name;
  }

  get name() {
    return this._name.toUpperCase();
  }

  set name(newName) {
    this._name = newName; // validation could be checked here such as only allowing non numerical values
  }

  walk() {
    console.log(this._name + ' is walking.');
  }
}

let bob = new Person('Bob');
console.log(bob.name); // Outputs 'BOB'

Example 3: getters and setters javascript

let obj = {
  log: ['a', 'b', 'c'],
  get latest() {
    if (this.log.length === 0) {
      return undefined;
    }
    return this.log[this.log.length - 1];
  }
};

obj.log.push('d');
console.log(obj.latest); //output: 'd'

Example 4: javascript getters and setters

/*Getter functions are meant to simply return (get) the value of an object's 
private variable to the user without the user directly accessing the private 
variable.*/
/*Setter functions are meant to modify (set) the value of an object's private 
variable based on the value passed into the setter function. This change could
involve calculations, or even overwriting the previous value completely.*/
class Book {
  constructor(author) {
    this._author = author;
  }
  // getter
  get writer() {
    return this._author;
  }
  // setter
  set writer(updatedAuthor) {
    this._author = updatedAuthor;
  }
}
const novel = new Book('anonymous');
console.log(novel.writer);  // anonymous
novel.writer = 'newAuthor';
console.log(novel.writer);  // newAuthor