2 votes

En JS, console.log se comporte de différentes manières, comme le montre le code. Pourquoi ?

Dans le code ci-dessous, console.log(obj) y console.log("obj"+"\n"+obj) se comporte de deux manières différentes en sortie.

const obj = new Object()
obj.firstName = 'Jack'
obj.lastName = 'Reacher'
obj.isTrue = true
obj.greet = function(){
  console.log('hi')
}

console.log(obj)//getting all the members

console.log("obj"+"\n"+obj)// not getting any member

3voto

FedeSc Points 437

Parce qu'en faisant cela :

("obj"+"\n"+obj)

Vous transformez l'objet en chaîne de caractères sans pour autant le stringifier.

essayer

const obj = new Object()
obj.firstName = 'Jack'
obj.lastName = 'Reacher'
obj.isTrue = true
obj.greet = function(){
  console.log('hi')
}

console.log(obj)//getting all the members

console.log("obj"+"\n"+JSON.stringify(obj))// not getting any member

Mise à jour - Regarder de plus près

Vous avez aussi une fonction qui ne sera pas stringifiée avec JSON.stringify() à moins que vous ne le traitiez d'abord comme tel :

const obj = new Object()
obj.firstName = 'Jack'
obj.lastName = 'Reacher'
obj.isTrue = true
obj.greet = function() {
  console.log('hi')
}

console.log(obj)

// DEALING WITH FUNCTION
obj.greet = obj.greet.toString();

console.log("obj" + "\n" + JSON.stringify(obj))

1voto

Orion Points 1020

Parce que dans la deuxième console, l'utilisation de string + obj L'objet sera converti en chaîne de caractères par le biais de cette méthode Object.prototype.toString . Vous pouvez vérifier cet article pour plus de détails sur la conversion de type en JavaScript.

Pour résoudre votre problème, vous pouvez utiliser JSON.stringify pour convertir l'objet en chaîne JSON et l'imprimer. Mais JSON.stringify ne convertira pas intentionnellement certaines données ou objets en chaîne.

Nodejs propose une méthode d'inspection des objets JavaScript util.inspect . L'objet sera imprimé en détail. Il est préférable d'utiliser cette méthode.

1voto

La chaîne de l'objet est "[object Object]" .

Lorsque vous ajoutez un objet à la chaîne, il est automatiquement converti en chaîne.

console.log(String({}))

1voto

Anna Vlasenko Points 411

Parce qu'avec + vous faites une coercion de type, et convertissez votre objet en chaîne de caractères, essayez console.log("obj", "\n", obj);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X