--- title: Object.prototype.toString() slug: Web/JavaScript/Reference/Global_Objects/Object/toString tags: - JavaScript - Об'єкт - метод - прототип translation_of: Web/JavaScript/Reference/Global_Objects/Object/toString ---
toString() повертає рядок, який відображає об'єкт.obj.toString()
Рядок, який відображає об'єкт.
Кожен об'єкт має метод toString(), який автоматично викликається, коли об'єкт повинен бути відображений як рядок, або коли об'єкт знаходиться у виразі, де очікується рядок. За замовчуванням, метод toString() успадковується усіма об'єктами, похідними від Object. Якщо цей метод не був перезаписаний у користувацькому об'єкті, то toString() поверне "[object type]", де type - це тип об'єкта. Наступний код це демонструє:
var o = new Object(); o.toString(); // повертає [object Object]
Примітка: Починаючи з JavaScript 1.8.5, toString(), викликаний для {{jsxref("null")}}, повертає [object Null], для {{jsxref("undefined")}} повертає [object Undefined], як визначенно у 5-й версії ECMAScript і згодом у Ерраті. Дивіться {{anch("Використання_toString_для_визначення_класу_обєкта", "Використання toString() для визначення класу об'єкта")}}.
toStringВи можете створити функцію, яка викликатиметься замість стандартного методу toString(). Метод toString() не приймає жодних аргументів і має повернути рядок. Метод toString(), який ви створите, може повертати будь-яке значення, але найбільш корисним буде, якщо він повертатиме інформацію про об'єкт.
Наступний код визначає тип об'єкта Dog і створює theDog, об'єкт типу Dog:
function Dog(name, breed, color, sex) {
this.name = name;
this.breed = breed;
this.color = color;
this.sex = sex;
}
theDog = new Dog('Галя', 'лабрадор', 'шоколадна', 'самиця');
Якщо ви викличете метод toString() для цього користувацького об'єкта, він поверне стандартне значення, успадковане від {{jsxref("Object")}}:
theDog.toString(); // повертає [object Object]
Наступний код створює і присвоює значення dogToString(), щоб перезаписати стандартний метод toString(). Ця функція генерує рядок, що складається з імені, породи, кольору і статі об'єкта, у вигляді "властивість = значення;".
Dog.prototype.toString = function dogToString() {
var ret = 'Собака ' + this.name + ' - ' + this.color + ' ' + this.sex + ' ' + this.breed;
return ret;
}
або
Dog.prototype.toString = function dogToString() {
return `Собака ${this.name} - ${this.color} ${this.sex} ${this.breed}`;
}
Завдяки цьому коду, як тільки theDog буде використаний у контексті рядка, JavaScript автоматично викличе новий метод toString(), який поверне наступний рядок:
"Собака Галя - шоколадна самиця лабрадор"
Метод toString() може бути використаний з будь-яким об'єктом, щоб отримати його клас. Щоб використати Object.prototype.toString() для будь-якого об'єкта, необхідно викликати {{jsxref("Function.prototype.call()")}} або {{jsxref("Function.prototype.apply()")}}, передаючи об'єкт, який ви хочете дослідити, першим параметром (thisArg).
var toString = Object.prototype.toString; toString.call(new Date); // [object Date] toString.call(new String); // [object String] toString.call(Math); // [object Math] // Починаючи з JavaScript 1.8.5 toString.call(undefined); // [object Undefined] toString.call(null); // [object Null]
| Специфікація | Статус | Коментар |
|---|---|---|
| {{SpecName('ESDraft', '#sec-object.prototype.tostring', 'Object.prototype.toString')}} | {{Spec2('ESDraft')}} | |
| {{SpecName('ES6', '#sec-object.prototype.tostring', 'Object.prototype.toString')}} | {{Spec2('ES6')}} | |
| {{SpecName('ES5.1', '#sec-15.2.4.2', 'Object.prototype.toString')}} | {{Spec2('ES5.1')}} | Виклик на {{jsxref("null")}} повертає [object Null], а {{jsxref("undefined")}} повертає [object Undefined] |
| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Початкове визначення. Реалізоване у JavaScript 1.0. |
{{Compat("javascript.builtins.Object.toString")}}