Javascript/Structure de données
Constructor
via la syntaxe function
On peut déclarer un constructeur de la manière suivante:
function User(name) {
this.name = name;
this.isAdmin = false;
}Pour créer une instance de l'objet user on peut utiliser le mot clé new.
const user = new User("John");via la syntaxe class
class User {
#privateName
constructor(name, firstName, isAdmin) {
this.#privateName = name;
this._firstName = firstName
this._isAdmin = isAdmin;
}
getFullName() {
return `${this.#privateName} ${this._firstName}`
}
get firstName() {
return this._firstName
}
set name(v) {
throw new Error("you're not allowed to do that")
}
}
const user1 = new User('John', 'Doe', false)
user1.firstName // 'Doe'
user1.name = 'Jack' // 'Error: you're not allowed to do that'
user1.getFullName() // 'John Doe'on peut aussi déclarer des fonctions ou des getter & setters
Exercice
Student
Créer une classe Student qui aura les proprietés suivantes:
- name
- firstName
- notes => une proprieté privée qui est un tableau de notes
Je dois pouvoir ajouter une note de la manière suivante:
const student = new Student('John', 'Doe')
student.addNote(16)la note doit être comprise entre 0 et 20 sinon une erreur est affichée.
Je dois pouvoir afficher sa moyenne aussi en faisant:
student.averageTodoApp
Créer 2 classes ayant les structures suivantes:
TodoList:
rootElement: l'élément sur lequel sera monté la TodoListitems: un tableau deTodoItemaddItem: une méthode de la classeTodoListpermettant d'ajouter un élément dans le tableauitemrender: une méthode permettant d'afficher la liste des éléments dansrootElement
TodoItem:
text: le texte de la la todo (string)completed: le statut de la la todo (boolean)id: l'id de la la todo (string) => voir la méthode crypto.randomUUIDhtmlElement: l'élément HTML qui sera crée en même temps que la classe et qui sera utilisé parTodoList.renderonToggle: une méthode permettant de passer la todo en done ou en incompleterender: une méthode permettant d'afficher l'élément danshtmlElement
Techniquement je dois être capable d'afficher la liste des todos en faisant:
const appDiv = document.getElementById('app');
const todoList = new TodoList(appDiv);
todoList.addItem({ text: 'make a todo app', completed: false });Créer un formulaire qui permet d'ajouter un élément à la liste.