Bonsoir à tous j'ai dû mal à saisir la différence entre ces 2 codes :
celui-ci :
var perso = {
    nom: "Aurora",
    sante: 150,
    force: 25
};
// Renvoie la description d'un personnage
function decrire(personnage) {
    var description = personnage.nom + " a " + personnage.sante + " points de vie et " + personnage.force + " en force";
    return description;
}

console.log(decrire(perso));


et celui-là :
var perso = {
    nom: "Aurora",
    sante: 150,
    force: 25,

    // Renvoie la description du personnage
    decrire: function () {
        var description = this.nom + " a " + this.sante + " points de vie et " +
            this.force + " en force";
        return description;
    }
};

console.log(perso.decrire());

// Aurora est blessée par une flèche
perso.sante = perso.sante - 20;

// Aurora trouve un bracelet de force
perso.force = perso.force + 10;

console.log(perso.decrire());

help Smiley ohwell

Merci à tous
Bonjour.

Dans le premier cas, la fonction decrire() est extérieure à l'objet et dans le deuxième, la fonction decrire() fait partie de l'objet ?

Dans ce cas, ça m'a l'air de revenir au même, non ?

Smiley smile
Pas tout à fait la même chose car dans le deuxième cas decrire est une méthode de perso ce qui implique que l'on ne peut plus appeler décrire que sur une instance de perso. Et cela est plus logique car seul perso à les champs nom, sante, force.

console.log(decrire(arme)); // Arme ne possède pas les champs nom, sante, force


Programmatiquement avoir des fonctions comme décrire accessible depuis tout le script est plutôt une mauvaise pratique car une modification peut entrainer des erreurs à plusieurs endroit dans le code et qui plus ait qui seront très difficilement détectables.