web-dev-qa-db-fra.com

Pourquoi utiliser des getters et setters en JavaScript?

Je sais comment getter et setter fonctionnent en JavaScript. Ce que je ne comprends pas, c'est pourquoi nous en avons besoin alors que nous pouvons obtenir le même résultat en utilisant des fonctions normales? Considérez le code suivant:

var person = {
    firstName: 'Jimmy',
    lastName: 'Smith',
    get fullName() {
        return this.firstName + ' ' + this.lastName;
    }
}

console.log(person.fullName);    // Jimmy Smith

On peut facilement remplacer getter par une fonction:

var person = {
    firstName: 'Jimmy',
    lastName: 'Smith',
    fullName: function() {
        return this.firstName + ' ' + this.lastName;
    }
}

console.log(person.fullName());    // Jimmy Smith

Je ne vois pas l'intérêt d'écrire getter et setter.

35
NL500

Une différence entre l'utilisation d'un getter ou d'un setter et l'utilisation d'une fonction standard est que les getters/setters sont automatiquement appelés lors de l'affectation. Cela ressemble donc à une propriété normale, mais en arrière-plan, vous pouvez avoir une logique supplémentaire (ou des vérifications) à exécuter juste avant ou après l'affectation.

Donc, si vous décidez d'ajouter ce type de logique supplémentaire à l'une des propriétés d'objet existantes qui sont déjà référencées, vous pouvez le convertir en style getter/setter sans modifier le reste du code qui a accès à cette propriété.

19
Bulent Vural