JavaScript: le classi e la parola chiave super

JavaScript: le classi e la parola chiave super

Questa parola chiave serve per accedere ai metodi e alle proprietà della classe JavaScript genitrice.

Supponiamo di avere la seguente classe:


'use strict';

class Developer {
    constructor(name = 'John', skills = []) {
        this.name = name;
        this.skills = skills;
    }

    toString() {
        return this.name + ' ' + this.skills.join(',');
    }
}

Vogliamo estendere questa classe aggiungendo al metodo toString() un prefisso. Possiamo usare la parola chiave super sia per inizializzare la classe derivata con le proprietà della classe genitrice sia per effettuare l'overloading del metodo toString():


'use strict';

class FullStackDeveloper extends Developer {
    constructor(name = 'John', skills = []) {
        super(name, skills);
    }

    toString() {
        return '[FULL STACK] ' + super.toString();
    }
}

Esempio:


'use strict';

let Paul = new Developer('Paul', ['jQuery', 'CSS']);
let Sam = new FullStackDeveloper('Sam', ['jQuery', 'CSS', 'PHP']);

console.log(Paul.toString()); // 'Paul jQuery,CSS'
console.log(Sam.toString()); // '[FULL STACK] Sam jQuery,CSS,PHP'

Il comportamento della parola chiave super ricorda in parte quello utilizzato da Java per gestire una feature analoga nella gestione dell'ereditarietà, ovviamente con le evidenti differenze.

Torna su