JavaScript метод Object.toString()
JavaScript ObjectОпределение и применение
JavaScript метод Object.toString() возвращает строковое представление указанного объекта, он вызывается без аргументов и должен возвращать строковое значение.
По умолчанию, метод toString() наследуется каждым объектом, произошедшим от объекта Object, он автоматически вызывается, когда объект должен быть представлен в строковом контексте, или когда объект участвует в выражении, где ожидается строковое значение.
Как правило, метод toString() не вызываются явно, а переопределяется в пользовательских объектах, если этот метод не переопределён в пользовательском объекте, то метод toString() возвращает строку следующегов вида:
"[object тип_объекта]" // под типом объекта понимается Object, String, Number и так далее
Поддержка браузерами
Метод | Chrome | Firefox | Opera | Safari | IExplorer | 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