Метод 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 была вызвана 2 раз
Функция count была вызвана 4 раз

Пример

Некоторые стандартные объекты имеют свои функции toString:

alert(new Date()) //''
alert([1, 2, 3]) //'1,2,3'