Cours jQuery utilisation d’un mutateur et d’une méthode statique, tutoriel & guide de travaux pratiques en pdf.
Accesseurs et mutateurs (Attribut et méthode statiques)
Toutes ces possibilités existent déjà dans le système OOP.
Pour l’attribut this.numero : 1 L’accesseur, getNumero(), est une méthode qui permet d’obtenir la valeur de l’attribut ; 2 Le mutateur, setNumero(value), est une méthode qui permet de changer la valeur de l’attribut this.numero.
Une méthode (idem pour l’attribut) statique est une méthode qui est rattachée à la « fonction classe ». Exemples célèbres : Math.PI et Math.floor(value).
Utilisation d’un mutateur (poopj2.html)
try { var Personne = $.dvjhClass._create({ _builder: function(prenom, nom, numero){ this.prenom = prenom || « »; this.nom = nom || « »; this.setNumero(numero); }, setNumero: function(value){ var n = parseInt(value, 10); if (!isNaN(n) && n >= 100){ this.numero = n; } else { throw(« Erreur, numero est inférieur à 100 »); } }, toString: function(){ return « Personne : « ; } }); var dvjh = new Personne(« Daniel », « Hagnoul », 999);
Utilisation d’un mutateur (poopj2.html) console.log(dvjh); dvjh.setNumero(-1); } catch(err){ alert(err); }
Dans l’exemple précédent, le mutateur setNumero(value) teste la validité du numéro et déclenche une exception en cas d’erreur.
Le constructeur fait appel au mutateur, this.setNumero(numero), et l’attribut this.numero est créé dans le mutateur.
Même si cela fonctionne, le fait de ne pas déclarer tous les attributs d’instance dans le constructeur déconcertera le prochain utilisateur de la « fonction classe » poopj.
L’utilisation d’une méthode statique, permet de déclarer l’attribut dans le constructeur.
Utilisation d’un mutateur et d’une méthode statique (poopj3.html)
try { var Personne = $.dvjhClass._create({ _builder: function(prenom, nom, numero){
this.prenom = prenom || « »; this.nom = nom || « »;
this.numero = Personne.TestNumero(numero);
}, setNumero: function(value){ this.numero = Personne.TestNumero(value);
}, toString: function(){ return « Personne : « ; } });
/* * Méthode statique */ Personne.TestNumero = function(value){
var n = parseInt(value, 10);
if (!isNaN(n) && n >= 100){ return n;
}
else
{ throw(« Erreur, numero est inférieur à 100 »);
}
}; /* * Vous pouvez contrôler le contenu du prototype * de la fonction classe poopj. * * La méthode statique est extérieure au prototype. */ console.log(Personne, Personne.prototype); var dvjh = new Personne(« Daniel », « Hagnoul », 999); console.log(dvjh, dvjh.numero); dvjh.setNumero(-1); } catch(err){ alert(err); }