--- 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")}}