Свойства и функции объекта Function

Для объекта Function определено два свойства: caller и length. Эти свойства применимы как функциям, заданным с помощью определения функции, так и к функциям, созданным с помощью конструктора Function.

Свойство caller определено только во время выполнения функции, т.е. оно доступно только в теле функции. Это свойство имеет значение null, если функция вызывается с самого высшего уровня программы JavaScript в Web-странице. В противном случае свойство caller содержит текст функции, которая вызвала данную функцию. При этом, если функция задана с помощью определения, в тексте функция после ключевого слова function указывается имя функции. Если же функция задана как объект Function, после ключевого слова function указывается имя "anonymous". Свойство не работает в Web-браузере Opera.

Свойство length, определенное для имени функции, содержит количество аргументов, которое должно быть передано в функцию.

Для объекта определены также два метода apply() и call(), которые рассматриваются в следующем разделе (см. 4.4.12.3).

Пример 4.4.58. Использование свойства caller объекта Function:

// Функция вычитания - определение

function substractOp(x, y)

{

if(substractOp.caller == null)

alert("Функция substractOp вызвана сценарием");

else

alert("Функция substractOp вызвана функцией: " +

substractOp.caller);

return x - y;

}

// Функция вычитания абсолютных величин

function substractAbs(x, y)

{

x = Math.abs(x);

y = Math.abs(y);

return substractOp(x, y);

}

// Функция вычитания большего числа из меньшего

substractGT = new Function("x", "y",

"if (x < y) return substractOp(y, x); else " +

"return substractOp(x, y);");

// Присвоение значений операндам

x = 5;

y = 8;

// Вызов функций

u1 = substractOp(x, y);

u2 = substractAbs(x, y);

u3 = substractGT(x, y);

// Вывод результатов

alert("u1=" + u1 + " u2=" + u2 + " u3=" + u3);

В этом фрагменте сценария функция substractOp() первый раз вызывается непосредственно из сценария, второй раз – из функции substractAbs() и третий раз – из функции substractGT().

Вывод этого фрагмента имеет следующий вид:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: