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], як визначенно в 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.

Підтримка браузерів

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
toStringChrome Full support YesEdge Full support 12Firefox Full support 1IE Full support YesOpera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesFirefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yesnodejs Full support Yes

Legend

Full support  
Full support

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