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

4.2. Инициализаторы объектов и массивов

4.2. Инициализаторы объектов и массивов

Инициализаторы объектов и массивов - это выражения, значениями которых являются вновь созданные объекты и массивы. Эти выражения-инициализаторы иногда называют «литералами объектов» и «литералами массивов». Однако, в отличие от истинных литералов, они не являются первичными выражениями, потому что включают множество подвыражений, определяющих значения свойств и элементов. Инициализаторы массивов имеют более простой синтаксис, поэтому мы рассмотрим их в первую очередь.

Инициализатор массива - это список выражений, разделенных запятыми, заключенный в квадратные скобки. Значением инициализатора массива является вновь созданный массив. Элементы этого нового массива инициализируются значениями выражений из списка:

[] // Пустой массив: отсутствие выражений в квадратных скобках
   // означает отсутствие элементов
[1+2,3+4] // Массив из 2 элементов. Первый элемент - 3, второй - 7

Выражения в инициализаторе массива, определяющие значения его элементов, сами могут быть инициализаторами массивов, благодаря чему имеется возможность создавать вложенные массивы:

var matrix = [[1,2,3], [4,5,6], [7,8,9]];

Выражения в инициализаторе массива, определяющие значения его элементов, вычисляются всякий раз, когда вычисляется значение инициализатора. Это означает, что значение выражения инициализатора массива может отличаться при каждом последующем его вычислении.

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

var sparseArray = [1,,,,5];

После последнего выражения в инициализаторах массивов допускается указывать завершающую запятую, при этом последний элемент с неопределенным значением создаваться не будет.

Выражения-инициализаторы объектов похожи на выражения-инициализаторы массивов, но вместо квадратных скобок в них используются фигурные скобки, а каждое подвыражение предваряется именем свойства и двоеточием:

var р = { х:2.3, у:-1.2 }; // Объект с 2 свойствами
var q = {}; // Пустой объект без свойств
q.x = 2.3; q.y = -1.2; // Теперь q имеет те же свойства, что и р

Литералы объектов могут быть вложенными. Например:

var rectangle = { upperLeft: { х: 2, у: 2 },
lowerRight: { х: 4, у: 5 } };

Выражения внутри инициализаторов объектов вычисляются всякий раз, когда вычисляется значение самого инициализатора, и не обязательно должны быть константами: они могут быть произвольными выражениями JavaScript. Кроме того, имена свойств в литералах объектов могут быть строками, а не идентификаторами (это удобно, когда возникает желание дать свойствам имена, совпадающие с зарезервированными словами, которые иначе не могут использоваться в качестве идентификаторов):

var side = 1;
var square = { "upperLeft": { x: p.x, y: p.y },
'lowerRight': { x: p.x + side, y: p.y + side}};

Мы еще вернемся к инициализаторам объектов и массивов в главах 6 и 7.

Оглавление книги


Генерация: 1.466. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз