JavaScript метод Object.toString()

JavaScript Object

Определение и применение

JavaScript метод Object.toString() возвращает строковое представление указанного объекта, он вызывается без аргументов и должен возвращать строковое значение.

По умолчанию, метод toString() наследуется каждым объектом, произошедшим от объекта Object, он автоматически вызывается, когда объект должен быть представлен в строковом контексте, или когда объект участвует в выражении, где ожидается строковое значение.

Как правило, метод toString() не вызываются явно, а переопределяется в пользовательских объектах, если этот метод не переопределён в пользовательском объекте, то метод toString() возвращает строку следующегов вида:

"[object тип_объекта]"
// под типом объекта понимается Object, String, Number и так далее

Поддержка браузерами

МетодChrome
Chrome
Firefox
Firefox
Opera
Opera
Safari
Safari
Internet Explorer
IExplorer
Microsoft Edge
Edge
toString()ДаДаДаДаДаДа

JavaScript синтаксис:

obj.toString();

Версия JavaScript

ECMAScript 1 (реализовано в JavaScript 1.0)

Пример использования

let obj = {  // инициализируем переменную, содержащую объект
    a: 1,
    b: 2,
    c: () => (this.a + this.b)
};

obj.toString(); // "[object Object]"

В этом примере мы инициализировали переменную, содержащую объект и с помощью метода toString() мы возвращаем строковое представление указанного объекта.

В следующем примере мы используем метод toString() с другими типами объектов:

Object.prototype.toString.apply( new Date );     // "[object Date]"
Object.prototype.toString.apply( new Number );   // "[object Number]"
Object.prototype.toString.apply( new String );   // "[object String]"

// начиная с версии JavaScript 1.8.5
Object.prototype.toString.apply( null );         // "[object Null]"
Object.prototype.toString.apply( undefined );    // "[object Undefined]"

В этом примере с использованием метода apply() мы явно вызываем метод toString() для демонстрации его работы на прочих типах объектов.

В следующем примере мы с Вами рассмотрим как переопределить метод toString() по умолчанию:

// создадим функцию конструктор
function Person( name, family ) {
  this.name = name;
  this.family = family;
}

// создаем объект типа Person и инициализируем им переменную
let person = new Person( "Василий", "Инкрементов" );

person.toString();  // "[object Object]"

// переопределяем метод toString() по умолчанию
Person.prototype.toString = function() {
    return "Имя: " + this.name + " Фамилия: " + this.family
};

person.toString();  // "Имя: Василий Фамилия: Инкрементов"

// создаем объект типа Person и инициализируем им переменную
let person2 = new Person( "Иван", "Декрементов" );

person2.toString();  // "Имя: Иван Фамилия: Декрементов"

В этом примере мы создали функцию конструктор Person и создали объект типа Person, которым инициализировали переменную. После этого мы вызываем метод toString() на пользовательском объекте и в качестве возвращемого значения по умолчанию (унаследованное от Object) получаем [object Object].

После этого мы переопределяем метод toString() по умолчанию, который возвращает, значения свойств name и family объекта и вызываем метод toString() снова. Обратите внимание, что в этот раз мы получаем более полезную информацию. Далее мы создаем еще один объект типа Person и так же используем метод toString().

JavaScript Object