Object.prototype.toString()
BaselineWidely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
МетодtoString()
возвращает строку, представляющую объект.
Интерактивный пример
function Dog(name) { this.name = name;}const dog1 = new Dog("Gabby");Dog.prototype.toString = function dogToString() { return `${this.name}`;};console.log(dog1.toString());// Expected output: "Gabby"
Синтаксис
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;};
или
Dog.prototype.toString = function dogToString() { return `Dog ${this.name} is a ${this.sex} ${this.color} ${this.breed}`;};
После объявления этого метода, при любом использовании переменной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.5toString.call(undefined); // [object Undefined]toString.call(null); // [object Null]
Спецификации
Specification |
---|
ECMAScript® 2026 Language Specification # sec-object.prototype.tostring |