Чтение онлайн

ЖАНРЫ

JavaScript. Подробное руководство, 6-е издание
Шрифт:

Возвращаемое значение

Строковое представление объекта.

Описание

Этот метод предназначен для получения строкового представления объекта, локализованного в соответствии с текущими региональными настройками. Метод

toLocaleString,
предоставляемый по умолчанию классом
Object
, просто вызывает метод
toString
и возвращает полученную от него нелокализованную строку. Однако обратите внимание, что другие классы, в том числе
Array
,
Date
и
Number
,
определяют собственные версии этого метода для локализованного преобразования в строку. Вы также можете переопределить этот метод собственными классами.

См. также

Array.toLocaleString, Date.toLocaleString, Number.toLocaleString, Object.toString

Object.toString

возвращает строковое представление объекта

Синтаксис

объект.toString

Возвращаемое значение

Строка, представляющая объект.

Описание

Метод

toString
относится к тем, которые обычно не вызываются явно в JavaScript-программах. Программист определяет этот метод в своих объектах, а система вызывает метод, когда требуется преобразовать объект в строку.

JavaScript вызывает метод

toString
для преобразования объекта в строку всякий раз, когда объект используется в строковом контексте. Например, если объект преобразуется в строку при передаче в функцию, требующую строкового аргумента:

alert(my_object);

Подобным же образом объекты преобразуются в строки, когда они конкатенируются со строками с помощью оператора +:

var msg = 'Мой объект: ' + my_object;

Метод

toString
вызывается без аргументов и должен возвращать строку. Чтобы от возвращаемой строки была какая-то польза, эта строка должна каким-либо образом базироваться на значении объекта, для которого был вызван метод.

Определяя в JavaScript специальный класс, целесообразно определить для него метод

toString.
Если этого не сделать, объект наследует метод toString, определенный по умолчанию в классе
Object
. Этот стандартный метод возвращает строку в формате:

[objectкласс]

где класс - это класс объекта: значение, такое как «Object», «String», «Number», «Function», «Window», «Document» и т.д. Такое поведение стандартного метода

toString
иногда бывает полезно для определения типа или класса неизвестного объекта. Однако большинство объектов имеют собственную версию
toString,
поэтому для произвольного объекта о необходимо явно вызывать метод
Object.toString,
как показано ниже:

Object.prototype.toString.apply(o);

Обратите внимание, что этот способ идентификации неизвестных объектов годится только для встроенных объектов. Если вы определяете собственный класс объектов, то класс для него будет соответствовать значению «Object». В этом случае дополнительную информацию об объекте позволит получить свойство

Object.constructor
. Метод
toString
может быть очень полезен при отладке JavaScript-программ - он позволяет выводить объекты и видеть
их значения. По одной только этой причине есть смысл определять метод
toString
для каждого создаваемого вами класса.

Несмотря на то что метод

toString
обычно вызывается системой автоматически, бывают случаи, когда его требуется вызвать явно. Например, чтобы выполнить явное преобразование объекта в строку, если JavaScript не делает это автоматически:

у = Math.sqrt(x); // Вычислить число

ystr = у.toString; // Преобразовать его в строку

Относительно этого примера следует помнить, что числа имеют встроенный метод

toString,
обеспечивающий принудительное преобразование.

В других случаях вызов

toString
может оказаться полезным - даже в таком контексте, когда JavaScript выполняет преобразование автоматически. Явное использование метода
toString
может сделать программный код более понятным:

alert(my_obj. toString);

См. также

Object.constructor), Object.toLocaleString, Object.valueOf

Object.valueOf

элементарное значение указанного объекта

Синтаксис

объект.valueOf

Возвращаемое значение

Элементарное значение, связанное с объектом, если оно есть. Если с объектом не связано значение, метод возвращает сам объект.

Описание

Метод

valueOf
объекта возвращает элементарное значение, связанное с этим объектом, если оно есть. Для объектов типа
Object
элементарное значение отсутствует, и метод такого объекта возвращает сам объект.

Однако для объектов типа

Number
метод
valueOf
возвращает элементарное числовое значение, представляемое объектом. Аналогично он возвращает элементарное логическое значение, связанное с объектом
Boolean
, или строку, связанную с объектом
String
.

Программисту редко приходится явно вызывать метод

valueOf.
Интерпретатор JavaScript делает это автоматически всякий раз, когда встречает объект там, где ожидается элементарное значение. Из-за автоматического вызова метода
valueOf
фактически трудно даже провести различие между элементарными значениями и соответствующими им объектами. Оператор
typeof
, например, показывает различие между строками и объектами
String
, но с практической точки зрения они работают в JavaScript-коде эквивалентным образом.

Метод

valueOf
объектов
Number, Boolean
и
String
преобразует эти объекты-обертки в представляемые ими элементарные значения. Конструктор
Object
выполняет противоположную операцию при вызове с числовым, логическим или строковым аргументом: он «заворачивает» элементарное значение в соответствующий объект-обертку. В большинстве случаев JavaScript берет это преобразование «элементарное значение - объект» на себя, поэтому необходимость в таком вызове конструктора
Object
возникает редко.

Поделиться с друзьями: