Skip to main content

toString() у об'єкта

метод toString() - це вбудований спосіб JavaScript перетворити об'єкт у рядок (string representation).

Цей метод викликається автоматично, коли об'єкт потрібно використати в текстовому контексті - наприклад, при конкатенації (+), логуванні, шаблонних рядках тощо.


Коротко

Синтаксис:

javascript
obj.toString()

Повертає рядкове представлення об'єкта.


Приклад - базова поведінка

javascript
const user = { name: 'Alice' }; console.log(user.toString()); // "[object Object]"

За замовчуванням toString() успадковується від Object.prototype, і повертає рядок вигляду:

javascript
"[object ТипОб'єкта]"

Коли викликається автоматично

javascript
const user = { name: 'Alice' }; console.log('Користувач: ' + user); // "Користувач: [object Object]" alert(user); // "[object Object]"

JS автоматично викликає toString(), щоб перетворити об'єкт у рядок.


Можна перевизначити toString()

Ти можеш задати своє рядкове представлення об'єкта:

javascript
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 намагається перетворити об'єкт у примітив, він викликає у порядку пріоритету:

  1. obj[Symbol.toPrimitive] (якщо є)
  2. obj.toString() (якщо очікується рядок)
  3. obj.valueOf() (якщо очікується число)

Приклад:

javascript
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():

javascript
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) - для повного вмісту

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.