Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «toString() у об'єкта». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**Метод `toString()`** - це вбудований спосіб JavaScript перетворити об'єкт у рядок (string representation). Цей метод викликається автоматично, коли об'єкт потрібно використати в текстовому контексті - наприклад, при конкатенації (`+`), логуванні, шаблонних рядках тощо. **Ключове:** за замовчуванням `toString()` успадковується від `Object.prototype` і повертає рядок вигляду `"[object ТипОб'єкта]"`, але його можна перевизначити.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображенняметод `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)` - для повного вмісту |Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.