En el siguiente ejemplo:
let s = {x: 1, y: 1}; console.log(s, s.toString());
¿Dónde se define el método '[object Object]'
? ¿Por qué imprimir un objeto se evalúa como algo diferente a hacer object.toString() ?
Las consolas de varios entornos generalmente están destinadas (y, por lo tanto, optimizadas para) la depuración. Si registra un objeto, es probable que la consola le muestre una vista completa, legible e interactiva del objeto. La consola no convierte los valores registrados en cadenas antes de mostrarlos; eso no sería útil para la depuración.
Cuando se llama a un objeto Object.prototype.toString
, se requiere seguir estos pasos en la especificación, lo que dará como resultado que se registre [object SOMETHING]
, donde ALGO puede ser Array
, Function
, etc., u Object
si ninguno de esos casos especiales coinciden. Para un objeto simple, ninguno de los casos especiales coincide, por lo que obtienes [object Object]
.
Reemplace s.string()
con JSON.stringify()
...
Consulte aquí... ¿Cuál es la diferencia en el uso de toString() en comparación con JSON.stringify()? para más