toString()
повертає рядок, який відображає об'єкт.Синтаксис
obj.toString()
Повертає
Рядок, який відображає об'єкт.
Опис
Кожен об'єкт має метод toString()
, який автоматично викликається, коли об'єкт повинен бути відображений як рядок, або коли об'єкт знаходиться у виразі, де очікується рядок. За замовчуванням, метод toString()
успадковується усіма об'єктами, похідними від Object
. Якщо цей метод не був перезаписаний у користувацькому об'єкті, то toString()
поверне "[object type]
", де type
- це тип об'єкта. Наступний код це демонструє:
var o = new Object();
o.toString(); // повертає [object Object]
Примітка: Починаючи з JavaScript 1.8.5, toString()
, викликаний для null
, повертає [object Null]
, для undefined
повертає [object Undefined]
, як визначенно у 5-й версії ECMAScript і згодом у Ерраті. Дивіться Використання 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()
для цього користувацького об'єкта, він поверне стандартне значення, успадковане від 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() для визначення класу об'єкта
Метод toString()
може бути використаний з будь-яким об'єктом, щоб отримати його клас. Щоб використати Object.prototype.toString()
для будь-якого об'єкта, необхідно викликати Function.prototype.call()
або 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]
Специфікації
Специфікація | Статус | Коментар |
---|---|---|
ECMAScript (ECMA-262) The definition of 'Object.prototype.toString' in that specification. |
Living Standard | |
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Object.prototype.toString' in that specification. |
Standard | |
ECMAScript 5.1 (ECMA-262) The definition of 'Object.prototype.toString' in that specification. |
Standard | Виклик на null повертає [object Null] , а undefined повертає [object Undefined] |
ECMAScript 1st Edition (ECMA-262) | Standard | Початкове визначення. Реалізоване у JavaScript 1.0. |
Сумісність з веб-переглядачами
BCD tables only load in the browser