Object.prototype.toString()
===========================

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

Интерактивный пример
--------------------

Синтаксис
---------
```

obj.toString()
```

### Возвращаемое значение

Строка, представляющая объект.

Описание
--------

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


```js
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`:


```js
function Dog(name, breed, color, sex) {
  this.name = name;
  this.breed = breed;
  this.color = color;
  this.sex = sex;
}

theDog = new Dog("Болтушка", "лабрадор", "шоколадный", "девочка");
```


Если вы вызовете метод `toString()` на этом пользовательском объекте, он вернёт значение по умолчанию, унаследованное от `Object`:


```js
theDog.toString(); // вернёт [object Object]
```


Следующий код создаёт и присваивает метод `dogToString()`, переопределяющий метод `toString()` по умолчанию. Эта функция генерирует строку, содержащую кличку, породу, цвет и пол объекта, в форме "`свойство = значение;`".


```js
Dog.prototype.toString = function dogToString() {
  var ret =
    "Собачка " +
    this.name +
    " - " +
    this.sex +
    ", " +
    this.color +
    " " +
    this.breed;
  return ret;
};
```


или


```js
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`.


```js
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 |
| --- |
| ECMAScript Language Specification # sec-object.prototype.tostring |

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

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

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

* `Object.prototype.toSource()` (en-US)
* `Object.prototype.valueOf()`
* `Number.prototype.toString()`
* `Symbol.toPrimitive`