JavaScript метод Object.prototype.toString()
Определение и применение
JavaScript метод Object.prototype.toString() возвращает строковое представление указанного объекта, он
вызывается без аргументов и должен возвращать строковое значение.
По умолчанию, метод toString() наследуется каждым объектом, произошедшим от объекта Object,
он автоматически вызывается, когда объект должен быть представлен в строковом контексте, или когда объект участвует в
выражении, где ожидается строковое значение.
Как правило, метод toString() не вызывается явно, а переопределяется в пользовательских объектах, если
этот метод не переопределён в пользовательском объекте, то метод toString() возвращает строку следующего
вида:
"[object тип_объекта]"
// под типом объекта понимается Object, String, Number и так далее
Object.prototype.toString.call(value) даёт метку типа, в том числе для null и
undefined. Метка может зависеть от Symbol.toStringTag, поэтому она не является надёжной
проверкой типа произвольного объекта.
Поддержка браузерами
Спецификация: ecma262
Поддерживается во всех основных браузерах с 2015 года.
| Возможность | Компьютеры | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
toString | 1 | 12 | 1 | 3 | 1 | 18 | 4 | 10.1 | 1 | 1.0 | 1 | 1 |
поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31
JavaScript синтаксис
obj.toString();
Спецификация
ECMAScript: Object.prototype.toString()
Примеры, попробуйте сами
В примере «Строковое представление объекта» показан результат вызова метода.
Строковое представление объекта
Измените свойства исходного объекта и сравните результат до и после вызова метода.
index.html
<html lang="ru">
<head>
<meta charset="UTF-8" />
<title>Строковое представление объекта</title>
</head>
<body>
<p>Результат выполнения выводится в консоль.</p>
</body>
</html>
main.js
let obj = {
// инициализируем переменную, содержащую объект
a: 1,
b: 2,
c() {
return this.a + this.b
},
}
console.log(obj.toString()) // "[object Object]"
В этом примере мы инициализировали переменную, содержащую объект и с помощью метода toString() мы
возвращаем строковое представление указанного объекта.
В следующем примере мы используем метод toString() с другими типами объектов:
В примере «Метки встроенных типов» показан результат вызова метода.
Метки встроенных типов
Измените свойства исходного объекта и сравните результат до и после вызова метода.
index.html
<html lang="ru">
<head>
<meta charset="UTF-8" />
<title>Метки встроенных типов</title>
</head>
<body>
<p>Результат выполнения выводится в консоль.</p>
</body>
</html>
main.js
console.log(Object.prototype.toString.apply(new Date())) // "[object Date]"
console.log(Object.prototype.toString.apply(new Number())) // "[object Number]"
console.log(Object.prototype.toString.apply(new String())) // "[object String]"
// начиная с версии JavaScript 1.8.5
console.log(Object.prototype.toString.apply(null)) // "[object Null]"
console.log(Object.prototype.toString.apply(undefined)) // "[object Undefined]"
В этом примере с использованием метода apply() мы явно вызываем метод toString() для
демонстрации его работы на прочих типах объектов.
В следующем примере мы с Вами рассмотрим как переопределить метод toString() по умолчанию:
В примере «Переопределение строкового представления» показан результат вызова метода.
Переопределение строкового представления
Измените свойства исходного объекта и сравните результат до и после вызова метода.
index.html
<html lang="ru">
<head>
<meta charset="UTF-8" />
<title>Переопределение строкового представления</title>
</head>
<body>
<p>Результат выполнения выводится в консоль.</p>
</body>
</html>
main.js
// создадим функцию конструктор
function Person(name, family) {
this.name = name
this.family = family
}
// создаем объект типа Calc и инициализируем им переменную
let person = new Person('Василий', 'Инкрементов')
console.log(person.toString()) // "[object Object]"
// переопределяем метод toString() по умолчанию
Person.prototype.toString = function () {
return 'Имя: ' + this.name + ' Фамилия: ' + this.family
}
console.log(person.toString()) // "Имя: Василий Фамилия: Инкрементов"
// создаем объект типа Calc и инициализируем им переменную
let person2 = new Person('Иван', 'Декрементов')
console.log(person2.toString()) // "Имя: Иван Фамилия: Декрементов"
В этом примере мы создали функцию конструктор Person и создали объект типа Person, которым
инициализировали переменную. После этого мы вызываем метод toString() на пользовательском объекте и в
качестве возвращаемого значения по умолчанию (унаследованное от Object) получаем
[object Object].
После этого мы переопределяем метод toString() по умолчанию, который возвращает, значения свойств
name и family объекта и вызываем метод toString() снова. Обратите внимание, что
в этот раз мы получаем более полезную информацию. Далее мы создаем еще один объект типа Person и так же
используем метод toString().