Каждый объект обладает методом toString
, который вызывается автоматически каждый раз, когда требуется строковое представление объекта.
Например, это произойдет в вызовах:
// alert требует строку,
// поэтому произойдет неявный вызов obj.toString
alert(obj)
// операция объединения строк сделает строку из obj
var s = 'Объект в виде строки:'+obj
Объект Object
предоставляет базовый метод toString
, который обычно перекрывается наследующими от Object
объектами.
По умолчанию, если этот метод не перекрыт объектом-наследником Object - он возвращает "[object <тип объекта>]".
var o = new Object();
alert(o.toString()) // [object Object]
Каждый основной объект яваскрипт обладает своим собственным методом toString
, например:
var d = new Date()
alert(d) // выведет d.toString()
Полезной практикой является перекрытие toString
для новых типов объектов. Метод toString
не получает аргументов и возвращает строку. Как правило, эта строка содержит основную информацию об объекте.
Пример: До перекрытия метода toString
function Dog(name,color) {
this.name=name
this.color=color
}
theDog = new Dog("Барбос","черный");
Если вызвать метод toString
сейчас, то он вернет [object Object]
.
Для изменения этого поведения добавим в прототип свой метод toString
:
Пример: После перекрытия метода toString
Dog.prototype.toString = function() {
return "Собака " + this.name + ", цвет:" + this.color
}
theDog = new Dog("Барбос","черный");
alert(theDog) // => "Собака Барбос, цвет: черный"
Каждый раз, когда объект theDog
будет использован в качестве строки, яваскрипт автоматически вызовет метод toString
, который вернет "Собака Барбос, цвет: черный".
Также стоит упомянуть, что эта функция позволяет пребразовать число к различным системам счисления:
number.toString( [radix] ),
где radix - целое число от 2 до 36, обозначающее систему счисления для чисел
В последнем коде ошибка.
Строка 2:
Ошибок нет, т.к. число 9 будет записываться так в любой системе счисления с основанием 10 и выше.
Супер!