Object.prototype.toString()

Метод 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 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 Виклик на null повертає [object Null], а undefined повертає [object Undefined]
ECMAScript 1st Edition (ECMA-262) Standard Початкове визначення. Реалізоване у JavaScript 1.0.

Сумісність з веб-переглядачами

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
toStringChrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 3Opera Full support YesSafari Full support 1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support YesSafari iOS Full support 1Samsung Internet Android Full support 1.0nodejs Full support Yes

Legend

Full support  
Full support

Дивіться також