Как происходит преобразование объектов в методе toString?

Как в этом случае работает преобразование объекта в строку? И, что более важно... Что здесь делает "дефолтный" метод toString (под "дефолтным" я подразумеваю метод, который не был переопределен вручную в самом объекте)?
let a = {
    valueOf: function () {
        return {};
    },
    toString: function() {
        //conversion to string
    }
};

console.log(String(a)); //[object Object]

Насколько я понимаю, объект конвертируется в строку прямо в самом в методе toString. Т.к. он не может вернуть объект и только в String(a) преобразовать этот объект в строковый тип. Потому что тогда метод toString будет возвращать объект, что уже не очень хорошо т.к. метод возвращающий непримитивный тип данных, будет проигнорирован.

Что же касается метода valueOf, я думаю, что во всех тех случаях, когда его поведение не было переопределено, будет возвращаться сам объект. И этот метод, как следствие, почти всегда будет проигнорирован. Проще говоря, я хочу сказать, что "дефолтный" метод valueOf всегда возвращает объекты.

  1. Так что мой первый вопрос: Происходит ли преобразование в строковый тип прямо в методе toString? Если да, всегда ли метод toString преобразует объекты в строковый тип?

  2. И второй вопрос: Всегда ли "дефолтный" метод valueOf возвращает объекты?
  • Вопрос задан
  • 125 просмотров
Пригласить эксперта
Ответы на вопрос 1
@gian_tiaga
Тут на ваши вопросы есть ответы

https://learn.javascript.ru/object-conversion
https://learn.javascript.ru/prototype
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы