В следующем примере:
let s = {x: 1, y: 1};
console.info(s, s.toString());
Где определен метод '[object Object]'
? Почему печать объекта оценивается как нечто отличное от выполнения object.toString() ?
Замени s.string()
на JSON.stringify()
...
См. здесь... В чем разница в использовании toString() по сравнению с JSON.stringify()? для дальнейшего
Вопрос был не в этом...
Я предоставил ссылку для дальнейшей демонстрации
Консоли различных сред обычно предназначены (и, следовательно, оптимизированы) для отладки. Если вы регистрируете объект, консоль, скорее всего, покажет вам полное, удобочитаемое интерактивное представление объекта. Консоль нет преобразует зарегистрированные значения в строки перед их отображением — это бесполезно для отладки.
Когда объект вызывается Object.prototype.toString
, в спецификации требуется пройти эти шаги, что приведет к регистрации [object SOMETHING]
, где ЧТО-ТО может быть Array
, Function
и т. д., или Object
, если ни один из этих особых случаев не совпадает. Для простого объекта ни один из особых случаев не подходит, поэтому вы получаете [object Object]
.
По первому вопросу см. пункт 19: 262.ecma-international.org/6.0/#sec-object.prototype.tostring