Метод toString - позволяет задать функцию преобразования объекта в строку.
Что бы понять зачем этот метод, рассмотрим несколько случаев:
var obj = {value: 1};
alert(obj) //'[object Object]'
obj + 'str' //'[object Object]str'
alert(new Date()) //''
Строка в какую будет преобразован объект и определяется методом toString. Если у объекта этот метод есть, то при строковом преобразовании применяется он. Если его нет, то объект преобразуется в [object Object].
Метод toString обязан возвращать примитив (строка, число, логическое значение), если он будет возвращать объект - он будет игнорироваться.
См. также valueOf (преобразование с число).
Синтаксис
объект.toString = function () {
return 'строка'
};
Примеры
Пример
С помощью toString напишем собственную функцию для преобразования объекта в строку:
var user = {
name: 'Андрей',
toString: function() {
return this.name;
}
};
alert('Привет ' + user);
Результат выполнения кода:
Пример
Теперь давайте уберем из объекта toString:
var user = {
name: 'Андрей',
};
alert('Привет ' + user);
Результат выполнения кода:
Пример
Функции - это тоже объекты. Давайте добавит toString функции:
function count() {
return count.n++;
}
count.n = 0;
count.toString = function() {
return 'Функция count была вызвана ' + this.n + ' раза <br>'
}
count();
count();
document.write(count);
count();
count();
document.write(count);
Результат выполнения кода:
Функция count была вызвана 4 раз
Пример
Некоторые стандартные объекты имеют свои функции toString:
alert(new Date()) //''
alert([1, 2, 3]) //'1,2,3'