Le classi in JavaScript: costruttore, metodi ed ereditarietà

Le classi in JavaScript: costruttore, metodi ed ereditarietà
Aggiornamento del 10 gennaio 2023
Se cerchi un tutorial su JavaScript che parli anche delle classi, può interessarti il mio nuovo tutorial su JavaScript.

Le classi sono arrivate in JavaScript con ECMAScript 2015. A differenza delle classi dei linguaggi a oggetti, in JavaScript le classi sono soltanto un tipo particolare di funzioni. Al posto della parola chiave “function”, però, si scrive “class”. Sono state introdotte perché la sintassi somigliasse a quella degli altri linguaggi orientati agli oggetti (Java, Python, C++).

Definire una classe

javascript
class Rectangle {
    constructor(height, width) {
        this.height = height;
        this.width = width;
    }
}

Per dichiarare una classe usi la parola chiave class seguita dal nome della classe (qui Rectangle).

Constructor: è il metodo speciale che inizializza un’istanza della classe. Ogni volta che crei una nuova istanza, il costruttore viene invocato.

I metodi di una classe

javascript
class Rectangle {
    constructor(height, width) {
        this.height = height;
        this.width = width; 
    }
    // Méthode prototype
    area() {
        return console.log(`La zone est ${this.height*this.width}`); 
    }
    // Méthode statique
    static display(rect){
        return console.log(`Height: ${rect.height} Width: ${rect.width}`); 
    }
}

const rectangle = new Rectangle(5, 4);  // Instancier la classe
rectangle.area(); 
// La zone est 20
Rectangle.display(rectangle); 
// Height: 5 Width: 4 
  • Metodo prototype: area() è un metodo prototype.
  • Metodo statico: display() è un metodo statico.

Metodo prototype

Un metodo prototype è accessibile solo dopo aver creato un’istanza della classe. Come vedi nell’esempio qui sopra, il metodo prototype si chiama (riga 17) scrivendo il nome dell’oggetto, il nome del metodo e le parentesi (gli eventuali parametri vanno dentro le parentesi).

Metodo statico

Un metodo statico si può chiamare senza istanziare la classe. I metodi statici sono definiti sulla classe stessa, non sull’oggetto. Non puoi quindi chiamarlo sull’oggetto (rectangle), ma sulla classe (Rectangle), come alla riga 19.

Ereditarietà

javascript
class Car {
    constructor(brand) {
        this.carname = brand; 
    }
    present() {
        return 'c\'est ' + this.carname;  
    }
}

class Model extends Car {
    constructor(brand, model) {
        super(brand); 
        this.model = model; 
    }
    show() {
        return console.log(`${this.present()} ${this.model}`); 
    }
}

const mycar = new Model("Ford", "Mustang"); 
mycar.show(); 
// c'est Ford Mustang

Per far ereditare una classe da un’altra si usa la parola chiave extends.

Una classe creata con l’ereditarietà eredita tutti i metodi di un’altra classe. Nell’esempio qui sopra la classe Model eredita tutti i metodi della classe Car.

Il metodo super() fa riferimento alla classe madre. Chiamando super() dentro il costruttore, invochi il costruttore del genitore e ottieni l’accesso alle sue proprietà e ai suoi metodi.
L’ereditarietà è utile per riutilizzare il codice: quando crei una nuova classe puoi riprendere le proprietà e i metodi di una classe che esiste già.

JavaScript

Damien Flandrin Sviluppatore web dal 2010, creatore di Gekkode e di Email Impact. Ogni articolo è testato su un progetto reale prima della pubblicazione. Contatti
Newsletter

I nuovi test, tutorial e progetti, via e-mail.

Test riproducibili, codice versionato, risultati datati. Mai spam.