Object.prototype.toString()

Сводка

Метод toString() возвращает строку, представляющую объект.

Синтаксис

obj.toString()

Описание

Каждый объект имеет метод toString(), автоматически вызывающийся, когда объект должен быть представлен в виде текстового значения или когда объект участвует в выражении, где ожидается строка. По умолчанию, метод toString() наследуется каждым объектом, произошедшим от объекта Object. Если этот метод не переопределён в пользовательском объекте, toString() возвращает строку вида "[object тип]", где тип — это тип объекта. Это иллюстрирует следующий код:

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.sex + ', ' + this.color + ' ' + this.breed;
  return ret;
}

После объявления этого метода, при любом использовании переменной theDog в строковом контексте, JavaScript будет автоматически вызывать функцию dogToString(), возвращающую следующую строку:

Собачка Болтушка - девочка, шоколадный лабрадор

Пример: использование метода 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 1-е издание. Стандарт Изначальное определение. Реализована в JavaScript 1.0.
ECMAScript 5.1 (ECMA-262)
Определение 'Object.prototype.toString' в этой спецификации.
Стандарт Вызов метода на null вернёт [object Null], а на undefined — [object Undefined]
ECMAScript 2015 (6th Edition, ECMA-262)
Определение 'Object.prototype.toString' в этой спецификации.
Стандарт  

Совместимость с браузерами

Возможность Chrome Firefox (Gecko) Internet Explorer Opera Safari
Базовая поддержка (Да) (Да) (Да) (Да) (Да)
Возможность Android Chrome для Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Базовая поддержка (Да) (Да) (Да) (Да) (Да) (Да)

Смотрите также

Метки документа и участники

 Внесли вклад в эту страницу: IvanMorkva, Mingun
 Обновлялась последний раз: IvanMorkva,