TOOGLE
Javascript classes - Front-End
In JavaScript, classes are a syntactical construct introduced in ECMAScript 2015 (ES6) that provide a way to define blueprints for creating objects. They serve as templates for creating objects with shared properties and behaviors. A class in JavaScript defines the structure and behavior of objects using a concise and more familiar syntax compared to traditional constructor functions. It encapsulates data (properties) and functionality (methods) into a single unit, making it easier to organize and maintain code. Here's a basic example of a class in JavaScript.

class Person {
    constructor(name, age) {
      this._name = name;
      this._age = age;
    }
  
    // Setter for name
    set name(string) {
      this._name = string;
    }
    
    // Setter for age
    set age(number) {
      this._age = number;
    }
  
    // Getter for name
    get name() {
      return this._name;
    }
  
    // Getter for age
    get age() {
      return this._age;
    }
  
    // Private method to capitalize a string
    _capitalize(string) {
      return `${string.charAt(0).toUpperCase()}${string.slice(1)}`;
    }
  
    // Method to perform a walk action
    walk() {
      return `${this._name} está andando.`;
    }
  
    // Method to increment the age by a given value
    incrementAge(value) {
      this._age += value;
    }
  
    // Method to check if the person is an adult
    isAdult() {
      return this._age >= 18;
    }
  
    // Static method to create a Person instance from an object
    static fromObject(obj) {
      return new Person(obj.name, obj.age);
    }
  
    // Static method to compare two Person instances by age
    static compareByAge(person1, person2) {
      return person1.age - person2.age;
    }
  
    // Method to convert the person's data to a formatted string
    toString() {
      return `Name: ${this._name}, Age: ${this._age}`;
    }
  
    // Method to reset the person's data
    reset() {
      this._name = '';
      this._age = 0;
    }
  }
  
  // Creating a new Person instance
  var person1 = new Person('John', 10);
  
  // Accessing name and age using getters
  console.log(person1.name);
  console.log(person1.age);
  
  // Modifying name and age using setters
  person1.name = 'Mario';
  person1.age = 6;
  
  // Accessing updated name and age using getters
  console.log(person1.name);
  console.log(person1.age);
  
  // Calling the walk() method
  console.log(person1.walk());
  
  // Incrementing the age by 5
  person1.incrementAge(5);
  console.log(person1.age); // Output: 11
  
  // Checking if the person is an adult
  console.log(person1.isAdult()); // Output: false
  
  // Creating a new Person instance from an object
  var person2 = Person.fromObject({ name: 'Alice', age: 25 });
  
  // Comparing two Person instances by age
  console.log(Person.compareByAge(person1, person2)); // Output: -14 (person1 is younger)
  
  // Converting the person's data to a formatted string
  console.log(person1.toString()); // Output: "Name: Mario, Age: 11"
  
  // Resetting the person's data
  person1.reset();
  console.log(person1.name); // Output: ''
  console.log(person1.age); // Output: 0