11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Je me permets de poster ce message car je rencontre une petite difficulté.

J'ai créé une fonction qui contient un objet avec deux propriétés (prenom et nom).
J'ai créé une seconde fonction qui doit retourner une chaîne de caractères :
Bonjour Jean Dupont
Le prenom et le nom sont ceux de l'objet.

Lorsque je teste, dans la console, j'obtiens ceci : Bonjour[object Object]

Auriez-vous une piste à me donner avec quelques explications Smiley confused ?

Le code est ici.


const objetPrenomNom = (prenom, nom) => {
return {
prenom: 'prenom',
nom: 'nom'
}
}

function afficherPrenomNom(){
let prenomNom = 'Bonjour' + objetPrenomNom('Jean', 'Dupont');
return prenomNom;
}

console.log(afficherPrenomNom())


Merci Smiley smile
Modifié par MickFR (09 May 2019 - 11:53)
Modérateur
Bonjour,

objetPrenomNom retourne un objet littéral que tu cherches à convertir en chaine de caractère, mais automatiquement ce n'est pas possible.

une première façon est de rajouter toString dans l'objet littéral, mais c'est assez moche:


const ObjetPrenomNom = (prenom, nom) => {
  return {
    prenom: prenom,
    nom: nom,
    toString: function(){return this.prenom + ' ' + this.nom}
  }
}

function afficherPrenomNom(){
  let prenomNom = 'Bonjour ' + ObjetPrenomNom('Jean', 'Dupont');
  return prenomNom;
}

console.log(afficherPrenomNom())


Une seconde plus propre est d'utiliser réellement des objets:


class Person {
  constructor(firstname, name) {
    this.firstname = firstname;
    this.name = name;
  }
  
  toString() {
  	return this.firstname + ' ' + this.name;
  }
}
let batman = new Person('Bruce', 'Wayne');
alert('Bonjour ' + batman);
Meilleure solution