JavaScript Définir un Setter / Getter dans un objet nouvellement créé


Exemple

JavaScript nous permet de définir des getters et des setters dans la syntaxe littérale de l'objet. Voici un exemple:

var date = {
    year: '2017',
    month: '02',
    day: '27',
    get date() {
        // Get the date in YYYY-MM-DD format
        return `${this.year}-${this.month}-${this.day}`
    },
    set date(dateString) {
        // Set the date from a YYYY-MM-DD formatted string
        var dateRegExp = /(\d{4})-(\d{2})-(\d{2})/;
        
        // Check that the string is correctly formatted
        if (dateRegExp.test(dateString)) {
            var parsedDate = dateRegExp.exec(dateString);
            this.year = parsedDate[1];
            this.month = parsedDate[2];
            this.day = parsedDate[3];
        }
        else {
            throw new Error('Date string must be in YYYY-MM-DD format');
        }
    }
};

Accéder à la propriété date.date renverrait la valeur 2017-02-27 . date.date = '2018-01-02 , la fonction setter serait date.date = '2018-01-02 , ce qui permettrait d'analyser la chaîne et de définir date.year = '2018' , date.month = '01' et date.day = '02' . Essayer de transmettre une chaîne incorrectement formatée (telle que "hello" ) provoquerait une erreur.