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], як визначенно в 5th Edition of ECMAScript і згодом в Errata. Дивитися Використання toString() для визначення класу об'єкта.
Приклади
Перезапис стандартного методу toString
Ти можеш створити свою функцію, яка буде викликатися замість стандартного toString(). Медот toString() не приймає жодних аргументів і повинен повернути рядок. Він може повертати любий рядок, але найбільш корисним він буде, якщо повертатиме якусь інформацію про об'єкт. (Звісно ти можеш додати свої аргументи, і повертати любе значення, але оскільки в багатьох випадках JavaScript автоматично викликає цей метод, це буде безглуздо)
Наступний код визначає тип об'єкта Dog і створює theDog, об'єкт типу Dog:
function Dog(name, breed, color, sex) {
this.name = name;
this.breed = breed;
this.color = color;
this.sex = sex;
}
theDog = new Dog('Gabby', 'Lab', 'chocolate', 'female');
Якщо ти викличеш toString() для цього кастомного об'єкту, то цей метод поверне стандартне значення унаслідованне від Object:
theDog.toString(); // повертає [object Object]
Наступний код створює і присвоює dogToString(), що перезаписати стандартний метод toString(). Ця функція генерує рядок, що складається з ім'я, породи, кольору і статі об'єкту.
Dog.prototype.toString = function dogToString() {
var ret = 'Dog ' + this.name + ' is a ' + this.sex + ' ' + this.color + ' ' + this.breed;
return ret;
}
або
Dog.prototype.toString = function dogToString() {
return `Dog ${this.name} is a ${this.sex} ${this.color} ${this.breed}`;
}
Завдяки цьому коду, коли theDog буде використаний в контексті, де він перетворюється у рядок, JavaScript автоматично викличе новий toString() метод, який поверне наступний рядок:
"Dog Gabby is a female chocolate Lab"
Використання 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]
Специфікація
| Specification | Status | Comment |
|---|---|---|
| ECMAScript Latest Draft (ECMA-262) The definition of 'Object.prototype.toString' in that specification. |
Draft | |
| 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 | Call on null returns [object Null], and undefined returns [object Undefined] |
| ECMAScript 1st Edition (ECMA-262) | Standard | Initial definition. Implemented in JavaScript 1.0. |
Підтримка браузерів
| Desktop | Mobile | Server | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
toString | Chrome Full support Yes | Edge Full support 12 | Firefox Full support 1 | IE Full support Yes | Opera Full support Yes | Safari Full support Yes | WebView Android Full support Yes | Chrome Android Full support Yes | Firefox Android Full support 4 | Opera Android Full support Yes | Safari iOS Full support Yes | Samsung Internet Android Full support Yes | nodejs Full support Yes |
Legend
- Full support
- Full support