toString() у об'єкта
метод toString() - це вбудований спосіб JavaScript
перетворити об'єкт у рядок (string representation).
Цей метод викликається автоматично,
коли об'єкт потрібно використати в текстовому контексті -
наприклад, при конкатенації (+), логуванні, шаблонних рядках тощо.
Коротко
Синтаксис:
obj.toString()Повертає рядкове представлення об'єкта.
Приклад - базова поведінка
const user = { name: 'Alice' };
console.log(user.toString()); // "[object Object]"За замовчуванням toString() успадковується від Object.prototype,
і повертає рядок вигляду:
"[object ТипОб'єкта]"Коли викликається автоматично
const user = { name: 'Alice' };
console.log('Користувач: ' + user);
// "Користувач: [object Object]"
alert(user);
// "[object Object]"JS автоматично викликає toString(),
щоб перетворити об'єкт у рядок.
Можна перевизначити toString()
Ти можеш задати своє рядкове представлення об'єкта:
const user = {
name: 'Alice',
age: 25,
toString() {
return `${this.name} (${this.age})`;
}
};
console.log(String(user)); // "Alice (25)"
console.log('Користувач: ' + user); // "Користувач: Alice (25)"При конкатенації + або String(obj) -
викличеться перевизначений toString().
Порівняння з valueOf()
Коли JS намагається перетворити об'єкт у примітив, він викликає у порядку пріоритету:
obj[Symbol.toPrimitive](якщо є)obj.toString()(якщо очікується рядок)obj.valueOf()(якщо очікується число)
Приклад:
const user = {
name: 'Alice',
valueOf() {
return 42;
},
toString() {
return 'Користувач';
}
};
console.log(String(user)); // "Користувач"
console.log(Number(user)); // 42У різних вбудованих об'єктів - свій toString()
| Тип | Приклад | Результат |
|---|---|---|
Object | {} | [object Object] |
Array | [1, 2, 3].toString() | "1,2,3" |
Date | (new Date()).toString() | "Tue Oct 14 2025 17:00:00 GMT+0300 (...)" |
Function | (() => {}).toString() | "() => {}" |
RegExp | /abc/.toString() | "/abc/" |
Map, Set | [object Map], [object Set] | не розкриваються |
Просунутий приклад - форматування JSON
Якщо ти хочеш рядок із вмістом об'єкта,
а не просто [object Object],
використай JSON.stringify():
const user = { name: 'Alice', age: 25 };
console.log(user.toString()); // "[object Object]"
console.log(JSON.stringify(user)); // '{"name":"Alice","age":25}'JSON.stringify() - це не toString(),
а окремий механізм серіалізації в JSON.
ПІДСУМОК
| Що робить | Перетворює об'єкт у рядок |
|---|---|
| Де визначений | Object.prototype.toString |
| За замовчуванням | Повертає "[object Object]" |
| Можна перевизначити | Так |
| Викликається автоматично | при конкатенації, String(), логах, шаблонних рядках |
| Альтернатива | JSON.stringify(obj) - для повного вмісту |
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.