Vous savez sans doute que l'on peut faire de l'objet avec JavaScript. Mais la syntaxe révèle quelques subtilités, qui sont révélatrices de la manière dont JavaScript implémente l'objet.
C'est ce qui fera l'objet ( ) de ce quiz JavaScript et des quelques uns qui suivront.
Soit la "classe" Personne
, avec deux attributs nom
et age
et une opération booléenne isMajeur
. On peut implémenter ceci comme suit :
function Personne(nom, age) {
this.nom = nom;
this.age = age;
this.isMajeur = Personne_isMajeur;
}
function Personne_isMajeur() {
return (this.age >= 18);
}
Gros problème : on peut appeler directement Personne_isMajeur()
comme une fonction, au lieu de l'invoquer sur un objet Personne
.
Certains vont alors réécrire ce qui précède comme suit :
function Personne(nom, age) {
this.nom = nom;
this.age = age;
this.isMajeur = function() {
return (this.age >= 18);
}
}
Mais d'autres auront plutôt tendance à le réécrire comme ceci :
function Personne(nom, age) {
this.nom = nom;
this.age = age;
}
Personne.prototype.isMajeur = function() {
return (this.age >= 18);
}
Quelle différence y a-t-il entre ces deux dernières écritures ?