JavaScript : rendre le Web interactif (école d'ingénieur) · Chapitre 6 · Exercice de TD
Ne pas tout écrire en JSON
Classes et modules · niveau 2
Énoncé
Une classe Client a un nom, un courriel publics et un mot de passe privé. Que donne JSON.stringify sur un client ? Écrire une sous-classe ClientPublic dont la conversion en JSON ne donne que le nom, y compris quand le client est lui-même la propriété d'un autre objet.
Corrigé
class Client {
#motDePasse;
constructor(nom, courriel, motDePasse) {
this.nom = nom;
this.courriel = courriel;
this.#motDePasse = motDePasse;
}
verifier(essai) {
return essai === this.#motDePasse;
}
}
class ClientPublic extends Client {
toJSON() {
return { nom: this.nom };
}
}
console.log(JSON.stringify(new Client("Lina", "lina@campus.fr", "s3cret")));
console.log(JSON.stringify(new ClientPublic("Lina", "lina@campus.fr", "s3cret")));
console.log(JSON.stringify({ commande: 42, client: new ClientPublic("Hugo", "h@campus.fr", "x") }));
{"nom":"Lina","courriel":"lina@campus.fr"}
{"nom":"Lina"}
{"commande":42,"client":{"nom":"Hugo"}}
Le mot de passe, champ privé, n'est jamais écrit ; mais le courriel l'est. JSON.stringify appelle la méthode toJSON de chaque valeur qui en possède une, à tous les niveaux de l'objet : le client imbriqué dans la commande est réduit à son nom.
100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.