JS: Введение в ООП
Теория: toString()
В прототипе объектов JavaScript есть один "магический метод" Object.prototype.toString(). Магический он потому, что он вызывается автоматически в тех местах, где объект используется как строка. Такое регулярно происходит во время разработки, мы все видели надписи наподобие этой: '[object Object]'.
Для чего же он нужен? В веб-разработке объекты часто приводятся к строке, например, при выводе на экран пользователю или при передаче данных между разными приложениями. Представьте себе список чего-либо, например, список курсов на Хекслете. Вывод имени каждого курса может быть сделан так:
Но если определить toString(), то код упрощается:
Преимущество здесь не только в более короткой записи, но и в том, что разных вариантов вывода, как правило, много. Даже когда мы занимаемся отладкой, нам нужен вывод в лог. Во всех этих ситуациях наличие toString() упрощает работу, так как не нужно явно преобразовывать объекты к строке. Кроме того, в будущем достаточно изменить ровно одно место, чтобы вывод поменялся во всех местах.
Сам по себе toString() не является чем-то особенным, это обычный метод в прототипе. А раз так, то мы можем переопределить его:
То же самое можно сделать и в прототипе любого конструктора:
Но что делать, если нужно вывести объект "как есть"? Такое бывает нужно для анализа внутренней структуры. Если у этого объекта не определен toString(), то мы получим максимально неинформативный вывод [object Object]. В таком случае можно конвертировать объект в JSON:






