Сводка
Метод 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 |
---|---|---|---|---|---|---|
Базовая поддержка | (Да) | (Да) | (Да) | (Да) | (Да) | (Да) |