Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

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

Function

BaselineWidely available *

На самом деле каждая JavaScript-функция является объектомFunction. Это легко проверить, выполнив проверку(function(){}).constructor === Function, которая вернёт true.

Конструктор

Function()

Создаёт новый объектFunction. Вызов конструктора напрямую позволяет создавать функции программным путём. Такой способ представляет угрозу для безопасности, а также несёт разные (хотя не такие значительные) проблемы с производительностью при использовании сGlobal_Objects/eval. Однако в отличие от eval, конструкторFunction создаёт функции, выполняемые только в глобальной области видимости.

Свойства экземпляра

Function.prototype.arguments

Массив с переданными функции аргументами.Это устаревшее свойство объектаFunction. Вместо него используйте объектarguments (доступный внутри функции).

Function.prototype.caller

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

Function.prototype.displayName

Отображаемое имя функции.

Function.prototype.length

Содержит количество аргументов в функции.

Function.prototype.name

Имя функции.

Методы экземпляра

Function.prototype.apply(thisArg [,argsArray])

Вызывает функцию и устанавливает еёthis на переданныйthisArg. Аргументы могут быть переданы в виде объектаArray.

Function.prototype.bind(thisArg[,arg1[,arg2[, ...argN]]])

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

Function.prototype.call(thisArg[,arg1,arg2, ...argN])

Вызывает функцию и устанавливает еёthis на переданное значение. Аргументы могут быть переданы как есть.

Function.prototype.toString()

Возвращает строку с исходным кодом функции.Переопределяет методObject.prototype.toString.

Примеры

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

Функции, созданные через конструкторFunction, не имеют доступа к собственному контексту исполнения, т.е. они всегда создаются в глобальной области видимости. При выполнении таких функций, они смогут обращаться только к своим локальным и глобальным переменным, но не к переменным в той области видимости, в которой вызывался конструкторFunction. В этом они отличаются от использованияGlobal_Objects/eval с функциями-выражениями.

js
var x = 10;function createFunction1() {  var x = 20;  return new Function("return x;"); // здесь |x| ссылается на глобальный |x|}function createFunction2() {  var x = 20;  function f() {    return x; // здесь |x| ссылается на локальный |x| выше  }  return f;}var f1 = createFunction1();console.log(f1()); // 10var f2 = createFunction2();console.log(f2()); // 20

Хотя этот код работает в браузерах, в окружении Node.js вызовf1() приведёт к ошибкеReferenceError, потому чтоx не будет найден. Это происходит из-за того, что область видимости верхнего уровня в Node не является глобальной областью видимости, поэтомуx ссылается на локальную переменную в пределах текущего модуля.

Спецификации

Specification
ECMAScript® 2026 Language Specification
# sec-function-objects

Совместимость с браузерами

Смотрите также

Help improve MDN

Learn how to contribute.

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp