Метод toString()
по умолчанию не очень информативен (однако его удобно использовать для определения класса объекта, как было показано в разделе 6.8.2). Например, следующий фрагмент просто записывает в переменную s строку "[object Object]":
var s = { x:1, у:1 }.toString( );
Этот метод по умолчанию не отображает особенно полезной информации, поэтому многие классы определяют собственные версии метода toString().
Например, когда массив преобразуется в строку, мы получаем список элементов массива, каждый из которых преобразуется в строку, а когда в строку преобразуется функция, мы получаем исходный программный код этой функции. Эти специализированные версии метода toString()
описываются в справочном руководстве. Смотрите, например, описание методов Array.toString(), Date.toString()
и Function.toString()
.
В разделе 9.6.3 описывается, как можно переопределить метод toString()
для своих собственных классов.
6.10.2. Метод toLocaleString()
В дополнение к методу toString()
все объекты имеют метод toLocaleString().
Назначение последнего состоит в получении локализованного строкового представления объекта. По умолчанию метод toLocaleString()
, определяемый классом Object
, никакой локализации не выполняет; он просто вызывает метод toString()
и возвращает полученное от него значение. Классы Date
и Number
определяют собственные версии метода toLocaleString()
, возвращающие строковые представления чисел и дат в соответствии с региональными настройками. Класс Array
определяет версию метода toLocaleString()
, действующую подобно методу toString()
за исключением того, что он форматирует элементы массива вызовом их метода toLocaleString()
, а не toString()
.
В действительности Object.prototype
не определяет метод toJSON()
, но метод JS0N.stringify()
(раздел 6.9) пытается отыскать и использовать метод toJSON()
любого объекта, который требуется сериализовать. Если объект обладает этим методом, он вызывается и сериализации подвергается возвращаемое значение, а не исходный объект. Примером может служить метод Date.toJSON()
.
Метод valueOf()
во многом похож на метод toString(),
но вызывается, когда интерпретатору JavaScript требуется преобразовать объект в значение какого-либо простого типа, отличного от строки, - обычно в число. Интерпретатор JavaScript вызывает этот метод автоматически, если объект используется в контексте значения простого типа. Метод valueOf()
по умолчанию не выполняет ничего, что представляло бы интерес, но некоторые встроенные классы объектов переопределяют метод valueOf()
(например, Date.valueOf()
). В разделе 9.6.3 описывается, как можно переопределить метод valueOf()
в собственных типах объектов.
Массив - это упорядоченная коллекция значений. Значения в массиве называются элементами, и каждый элемент характеризуется числовой позицией в массиве, которая называется индексом. Массивы в языке JavaScript являются нети-пизированными: элементы массива могут иметь любой тип, причем разные элементы одного и того же массива могут иметь разные типы. Элементы массива могут даже быть объектами или другими массивами, что позволяет создавать сложные структуры данных, такие как массивы объектов и массивы массивов. Отсчет индексов массивов в языке JavaScript начинается с нуля и для них используются 32-битные целые числа: первый элемент массива имеет индекс 0, а наибольший возможный индекс имеет значение 4294967294 (2 32-2), т.е. максимально возможный размер массива составляет 4294967295 элементов. Массивы в JavaScript являются динамическими: они могут увеличиваться и уменьшаться в размерах по мере необходимости; нет необходимости объявлять фиксированные размеры массивов при их создании или повторно распределять память при изменении их размеров. Массивы в JavaScript могут быть разреженными: не требуется, чтобы массив содержал элементы с непрерывной последовательностью индексов - в массивах могут отсутствовать элементы с некоторыми индексами. Все массивы в JavaScript имеют свойство length
. Для неразреженных массивов это свойство определяет количество элементов в массиве. Для разреженных массивов значение length
больше числа всех элементов в массиве.
Читать дальше
Конец ознакомительного отрывка
Купить книгу