fonction constructeur d'objets: return this ou pas ?

Le
ast
Bonjour,

Je trouve des exemples de fonction constructeurs d'objet avec un "return this;"
à la fin

ici: http://fr.wikibooks.org/wiki/Programmation_JavaScript/Notation_JSON

function Article(nom, prix_unitaire, quantite)
{
this.nom = nom;
this.prix_unitaire = prix_unitaire;
this.quantite = quantite;
this.resume = function(){
return this.nom+" x "+this.quantite+" à "+this.prix_unitaire+
" l'unité coûte(nt) "+( this.quantite*this.prix_unitaire );
}
return this;
}
var article = new Article( "Livre", 21.99, 2);


et d'autres exemples sans return

là: http://b.kostrzewa.free.fr/javascript/td-objets/creation.html

function Rectangle(l,h) { this.largeur=l; this.hauteur=h; this.perim=perim; this.aire=aire;}

var R=new Rectangle(8,6);



Quelle difference ?
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Pascal Poncet
Le #23157881
Le 25/02/2011 10:33, ast a écrit :
Bonjour,



Bonsoir,

function Article(nom, prix_unitaire, quantite)
{
this.nom = nom;
this.prix_unitaire = prix_unitaire;
this.quantite = quantite;
this.resume = function(){
return this.nom+" x "+this.quantite+" à "+this.prix_unitaire+
" l'unité coûte(nt) "+( this.quantite*this.prix_unitaire );
}
return this;
}
var article = new Article( "Livre", 21.99, 2);



Aucun intérêt, à mon avis, dans cet exemple.

Je connais deux styles d'écriture à la mode qui nécessitent de retourner
l'objet à la fin d'une fonction.

La première, la plus simple à appréhender, est l'écriture en cascade.

Supposons le code suivant :

<script>
function Article(nom, pu, qte) {
this.nom = nom;
this.pu = pu;
this.qte = qte;
}
Article.prototype.setQte = function(qte){
this.qte = qte;
return this;
}
Article.prototype.resume = function(){
var parts = [
"Nom : " + this.nom,
"P.U. : " + this.pu,
"Quantité : " + this.qte
];
console.log(parts.join(", ")); // Firebug ou équivalent
return this;
}
</script>

Cela nous permet maintenant d'écrire :

<script>
var article = new Article("Livre", 21.99, 2);
article.resume().setQte(3).resume();
</script>

Après, c'est une question de goût, on trouve ça plus lisible, ou pas,
que d'appeler ces méthodes sur différentes lignes d'instructions (perso,
j'aime moyen).


L'autre emploi possible se trouve dans le pattern "module" et, là, je
préfère renvoyer à un article approfondi (en anglais, désolé) :
http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth



--
Cordialement,
Pascal
Publicité
Poster une réponse
Anonyme