8c1dea14

Объект Function


Предопределённый объект Function специфицирует строку кода JavaScript, которая компилируется как функция.


Создание Function-объекта:

functionObjectName = new Function ([arg1, arg2, ... argn], functionBody)

functionObjectName это имя переменной или свойства существующего объекта. Это также может быть объект с последующим именем обработчика события, в нижнем регистре, таким как window.onerror.

arg1, arg2, ... argn это аргументы, используемые функцией в качестве имён формальных аргументов. Каждый обязан быть строкой, соответствующей верному идентификатору JavaScript; например, "x" или "theForm".

functionBody это строка, специфицирующая код JavaScript, компилируемый как тело функции.


Function-объекты вычисляются всякий раз при их использовании. Это менее эффективно, чем объявление функции и вызов её в коде, поскольку объявленные функции компилируются.

Дополнительно Вы можете также использовать оператор function и выражение function. См. книгу .

Следующий код присваивает функцию переменной setBGColor. Эта функция устанавливает цвет фона документа.

var setBGColor = new Function("document.bgColor='antiquewhite'")

Чтобы вызвать Function-объект, Вы можете специфицировать имя переменной так, будто это функция. Следующий код выполняет функцию, специфицированную переменной setBGColor:


var colorChoice="antiquewhite"

if (colorChoice=="antiquewhite") {setBGColor()}

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


1. document.form1.colorButton.onclick=setBGColor

2. <INPUT NAME="colorButton" TYPE="button"

      VALUE="Change background color"

      onClick="setBGColor()">

Создание переменной setBGColor, показанное выше, аналогично объявлению следующей функции:


function setBGColor() {

   document.bgColor='antiquewhite'
}

Присвоение функции переменной похоже на объявление функции, но есть и отличия:

  • Если Вы присваиваете функцию переменной, используя var setBGColor = new Function("..."), setBGColor является переменной, для которой текущим значением является ссылка на функцию, созданную оператором new Function().
  • Если Вы создаёте функцию, используя function setBGColor() {...}, setBGColor не является переменной. Это имя функции.
  • Вы можете вложить одну функцию в другую. Вложенная (внутренняя) функция является private для своего контейнера (внешней функции):



  • Доступ ко внутренней функции имеется только из операторов во внешней функции.

  • Внутренняя функция может использовать аргументы и переменные внешней функции. Внешняя функция не может использовать аргументы и переменные внутренней функции.




  • Содержание раздела