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

Function

Function

Function

функция JavaScript (Object->Function)

Синтаксис

function имя_функции(имена_аргументов) // Инструкция определения функции {
  тело
}
function(имена _аргументов) { тело } // Литерал неименованной функции
имя_функции{значения_аргументов) // Вызов функции

Конструктор

new Function(имена_аргументов..., тело)

Аргументы

имена_аргументов...

Любое количество строковых аргументов, которые присваивают имя одному или нескольким аргументам создаваемого объекта Function.

тело

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

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

Вновь созданный объект Function. Вызов функции приводит к выполнению JavaScript-кода, составляющего аргумент тело.

Исключения

SyntaxError Указывает, что в аргументе тело или в одном из аргументов из перечня имена_аргументов имеется синтаксическая ошибка.

Свойства

arguments[]

Массив аргументов, переданных функции. Признано устаревшим.

caller

Ссылка на объект Function, вызвавший данную функцию, или null, если функция была вызвана из программного кода верхнего уровня. Признано устаревшим.

length

Число именованных аргументов, указанных при объявлении функции.

prototype

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

Методы

apply()

Вызывает функцию как метод указанного объекта, передавая ей указанный массив аргументов.

bind()

Возвращает новую функцию, которая вызывает данную как метод указанного объекта с указанными аргументами.

call()

Вызывает функцию как метод указанного объекта, передавая ей указанные аргументы.

toString()

Возвращает строковое представление функции.

Описание

Функция в языке JavaScript - это фундаментальный тип данных. В главе 8 рассказывается, как определять и использовать функции, а в главе 9 рассматриваются близкие темы, касающиеся методов, конструкторов и свойства prototype функций. Подробности см. в этих главах. Обратите внимание: функциональные объекты могут создаваться с помощью описанного здесь конструктора Function(), но это неэффективно, поэтому в большинстве случаев предпочтительным способом определения функции является инструкция определения функции или функциональный литерал.

В JavaScript 1.1 и более поздних версиях тело функции автоматически получает локальную переменную по имени arguments, которая ссылается на объект Arguments. Этот объект представляет собой массив значений, переданных функции в качестве аргументов. Не путайте его с устаревшим свойством arguments[], описанным ранее. Подробности см. в статье об объекте Arguments.

Function.apply()

вызывает функцию как метод объекта

Синтаксис

функция, apply(этот_объект, аргументы)

Аргументы

этот_объект Объект, к которому должна быть применена функция. В теле функции аргумент этот_объект становится значением ключевого слова this. Если указанный аргумент содержит значение null, используется глобальный объект.

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

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

Значение, возвращаемое при вызове функции.

Исключения

ТуреЕrror Генерируется, если метод вызывается для объекта, не являющегося функцией, или с аргументом аргументы, не являющимся массивом или объектом Arguments.

Описание

Метод apply() вызывает указанную функцию, как если бы она была методом объекта, заданного аргументом этот_объект, передавая ей аргументы, которые содержатся в массиве аргументы. Он возвращает значение, возвращаемое функцией. В теле функции ключевое слово this ссылается на объект этот_объект.

Аргумент аргументы должен быть массивом или объектом Arguments. Если аргументы должны передаваться функции в виде отдельных аргументов, а не в виде массива, следует использовать вызов Function.call().

Пример

// Применяет метод Object.toStгing(), предлагаемый по умолчанию для объекта,
// переопределяющего его собственной версией метода. Обратите внимание
// на отсутствие аргументов.
Object.prototype.toString.apply(o);
// Вызывает метод Math.maxO, используемый для нахождения максимального элемента
// в массиве. Обратите внимание: в этом случае первый аргумент не имеет значения,
var data = [1,2,3,4,5,6,7,8];
Math.max.apply(null, data);

См. также

Function. call()

Function.arguments[] (устарело)

аргументы, переданные функции

Синтаксис

функция.arguments [і]
функция.arguments, length

Описание

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

Это свойство признано устаревшим, и его никогда не следует использовать в новых JavaScript-сценариях; вместо него рекомендуется использовать объект Arguments.

См. также

Arguments

Function.bind() (ECMAScript 5)

возвращает функцию, которая вызывается как метод

Синтаксис

функция.bind (объект)
функция.bind (объект, аргументы...)

Аргументы

объект Объект, к которому должна быть привязана функция.

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

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

Новая функция, которая будет вызывать эту функцию как метод объекта и передавать ей указанные аргументы.

Описание

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

Пример

Допустим, что имеется функция f и в программе вызывается ее метод bind(), как показано ниже:

var g = f.bind(o, 1, 2);

В результате этого будет создана новая функция g, вызов g(3) которой эквивалентен следующему вызову:

f.call(o, 1, 2, 3);

См. также

Function.apply(), Function.call(), раздел 8.7.4

Function.call()

вызывает функцию как метод объекта

Синтаксис

функция.call(этот_объект, аргументы...)

Аргументы

этот_объект Объект, относительно которого должна быть вызвана функция. В теле функции аргумент этот_объект становится значением ключевого слова this. Если этот аргумент содержит значение null, используется глобальный объект.

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

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

Значение, возвращаемое вызовом функции.

Исключения

ТуреЕrror Генерируется, если метод вызывается для объекта, не являющегося функцией.

Описание

саll() вызывает указанную функцию, как если бы она была методом объекта, указанного в аргументе этот_объект, передавая ей любые аргументы, расположенные в списке аргументов после аргумента этот_объект. Вызов call() возвращает то, что возвращает вызываемая функция. В теле функции ключевое слово this ссылается на объект этот_объект или на глобальный объект, если аргумент этот_объект содержит значение null. Если аргументы для передачи в функцию требуется указать в виде массива, используйте метод Function.apply().

Пример

// Вызывает метод Object.toString(), по умолчанию предлагаемый для объекта,
// переопределяющего его собственной версией метода. Обратите внимание
// на отсутствие аргументов.
Object.рrototype.toString.call(о);

См. также

Function. apply()

Function.caller (устарело; не определено в строгом режиме)

функция, вызвавшая данную

Синтаксис

функция.caller

Описание

В ранних версиях JavaScript свойство caller объекта Function представляло собой ссылку на функцию, вызвавшую текущую функцию. Если функция вызывается из JavaScript-программы верхнего уровня, свойство caller будет иметь значение null. Это свойство может использоваться только внутри функции (т. е. свойство caller определено для функции, только пока она выполняется).

Свойство Function.caller не является частью стандарта ECMAScript и не обязательно для совместимых реализаций, поэтому не следует использовать его.

Function.length

количество аргументов в объявлении функции

Синтаксис

функция.length

Описание

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

См. также

Arguments.length

Function.prototype

прототип класса объектов

Синтаксис

функция.prototype

Описание

Свойство prototype применяется, когда функция вызывается как конструктор. Оно ссылается на объект, являющийся прототипом для целого класса объектов. Любой объект, созданный с помощью конструктора, наследует все свойства объекта, на который ссылается свойство prototype.

Обсуждение функций-конструкторов, свойства prototype и определений классов в языке JavaScript находится в главе 9.

См. также

Глава 9

Function.toString()

преобразует функцию в строку

Синтаксис

функция.toString()

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

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

Исключения

ТуреЕrror Генерируется, если метод вызывается для объекта, не являющегося функцией.

Описание

Метод toString() объекта Function преобразует функцию в строку способом, зависящим от реализации. В большинстве реализаций, например в Firefox и IE, данный метод возвращает строку JavaScript-кода, которая включает ключевое слово function, список аргументов, полное тело функции и т. д. В этих реализациях результат работы метода toString() может передаваться в виде аргумента функции eval(). Однако такое поведение не оговаривается спецификациями, и на него не следует полагаться.

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


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