JavaScript. Подробное руководство, 6-е издание, стр. 28
<b>parselnt("11", 2); // => 3 (1*2 + 1)</b><b>parselnt("ff”, 16); // => 255 (15*16 + 15)</b><b>parselnt("zz", 36); // => 1295 (35*36 + 35)</b><b>parselnt("077", 8); // => 63 (7*8 + 7)</b><b>parselnt("077", 10) // => 77 (7*10 + 7)</b>3.8.3. Преобразование объектов в простые значения
Преобразование объектов в логические значения выполняется очень просто: все объекты (включая массивы и функции) преобразуются в значение true. Это справедливо и для объектов-оберток: результатом вызова new Boolean (false) является объект, а не простое значение, поэтому он также преобразуется в значение true.
Преобразование объекта в строку и преобразование объекта в число выполняется вызовом соответствующего метода объекта. Все осложняется тем, что объекты в языке JavaScript имеют два разных метода для выполнения преобразований, а также наличием нескольких специальных случаев, описываемых ниже. Обратите внимание, что правила преобразования объектов в строки и числа, описываемые здесь, применяются только к объектам самого языка JavaScript. Объекты среды выполнения (например, определяемые веб-броузерами) могут предусматривать собственные алгоритмы преобразования в числа и строки.
Все объекты наследуют два метода преобразования. Первый из них называется toString(), он возвращает строковое представление объекта. По умолчанию метод toString() не возвращает ничего особенно интересного (хотя эта информация иногда может оказаться полезной, как будет показано в примере 6.4):
<b>({x:1, y:2}).toString() // => "[object Object]"</b>Многие классы определяют более специализированные версии метода
<b>toString()</b><b>toString()</b><b>Array</b><b>toString()</b><b>Function</b>Класс
<b>Date</b><b>toString(),</b><b>RegExp</b><b>toString(),</b><b>RegExp</b><b>[1,2.3].toString() // => "1.2,3"</b><b>(function(x) { f(x); }).toString() // => "function(x) {\n f(x);\n}"</b><b>/\d+/g.toString() // => "/\\d+/g"</b><b>new Date(2010,0,1).toString() // => "Fri Jan 01 2010 00:00:00 GMT+0300"</b>Другая функция преобразования объектов называется
<b>valueOf().</b><b>valueOf()</b><b>valueOf(),</b><b>valueOf()</b><b>Date</b><b>valueOf()</b><b>var d = new Date(2010, 0, 1); // 1 января 2010 года, (время Московское)</b><b>d.valueOf() // => 1262293200000</b>Теперь, разобравшись с методами
<b>toString()</b><b>valueOf(),</b>Преобразование объектов в строку интерпретатор JavaScript выполняет в два этапа:
• Если объект имеет метод
<b>toString(),</b>• Если объект не имеет метода
<b>toString()</b><b>valueOf().</b>• В противном случае интерпретатор делает вывод, что ни
<b>toString(),</b><b>valueOf()</b>При преобразовании объекта в число интерпретатор выполняет те же действия, но первым пытается применить метод
<b>valueOf():</b>• Если объект имеет метод
<b>valueOf(),</b>• Иначе, если объект имеет метод
<b>toString(),</b>