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

ЖАНРЫ

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

Свойства

callee
– Ссылка на выполняемую в данный момент функцию.

length
– Количество аргументов, переданных функции, и количество элементов массива в объекте Arguments.

Описание

Когда вызывается функция, для нее создается объект

Arguments
, и локальная переменная
arguments
автоматически инициализируется ссылкой на объект
Arguments
. Основное назначение объекта
Arguments
– предоставить возможность определить, сколькo аргументов передано
функции, и обратиться к неименованным аргументам. В дополнение к элементам массива и свойству
length
, у объекта
Arguments
имеется свойство
callee
, которое позволяет неименованной функции ссылаться на саму себя.

Для большинства задач объект

Arguments
можно рассматривать как массив с дополнительным свойством
callee
. Однако он не является экземпляром объекта
Array
, а свойство
Arguments.length
не обладает особым поведением, как свойство
Array.length
, и не может использоваться для изменения размера массива.

При выполнении сценария в нестрогом режиме объект

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

См. также

Function; глава 8

Arguments.callee

(не доступно в строгом режиме)

функция, выполняемая в данный момент

Синтаксис

arguments.callee

Описание

arguments.callee
ссылается на функцию, выполняющуюся в данный момент. Данный синтаксис предоставляет неименованной функции возможность сослаться на себя. Это свойство определено только внутри тела функции.

Пример

// Неименованный литерал функции использует свойство callee

// для ссылки на себя, чтобы произвести рекурсивный вызов

var factorial = function(x) {

if (x < 2) return 1; else return x * arguments.callee(x1);

}

var у = factorial(5); // Вернет 120

Arguments.length

число аргументов, переданных функции

Синтаксис

arguments.length

Описание

Свойство

length
объекта
Arguments
возвращает количество аргументов, переданных текущей функции. Это свойство определено только внутри тела функции.

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

Function.length
. Кроме того, следует отметить, что это свойство не обладает особым поведением, как свойство
Array.length
.

Пример

//
Использовать объект Arguments, чтобы проверить, верное ли количество

// аргументов было передано

function check(args) {

var actual = args.length; // Фактическое количество аргументов

var expected = args.callee.length; // Ожидаемое количество аргументов

if (actual != expected) { // Если не совпадают, сгенерировать исключение

throw new Error("Неверное число аргументов: ожидается: " +

expected + ”; фактически передано " + actual);

}

}

// Функция, демонстрирующая использование функции, приведенной выше

function f(x, у, z) {

check(arguments); // Проверить правильность количества аргументов

return х + у + z; // Выполнить оставшуюся часть функции обычным образом

См. также

Array.length, Function.length

Array

Array

встроенная поддержка массивов (Object->Array)

Конструктор

new Array

new Array(размер)

new Array(элементе, элемент1..... элемент)

Аргументы

размер– Желаемое количество элементов в массиве. Длина возвращаемого массива (

length
) равна аргументу размер.

элемент0, ... элементN– Список аргументов из двух и более произвольных значений. Когда конструктор А г ray вызывается с этими аргументами, элементы только что созданного массива инициализируются указанными значениями, а свойство length становится равным количеству аргументов.

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

Вновь созданный и инициализированный массив. Когда конструктор

Array
вызывается без аргументов, он возвращает пустой массив, свойство
length
которого равно 0.

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

Аrray
вызывается как функция (без оператора
new
), он ведет себя точно так-же, как при вызове с оператором
new
.

Исключения

RangeErгог
Когда конструктору
Аггау
передается один целый аргумент размер, генерируется исключение
RangeErгог
, если размер отрицателен или превышает 232– 1.

Синтаксис литерала

ECMAScript v3 определяет синтаксис литералов для массивов. Программист может создавать и инициализировать массив, заключая список выражений, перечисленных через запятые, в квадратные скобки. Значения этих выражений становятся элементами массива. Например:

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