Spec-Zone.ru › JavaScript

Функция

Базовый уровень Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.

Объект Function предоставляет методы для функций. В JavaScript каждая функция фактически является объектом Function.

Конструктор

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

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

Эти свойства определены для Function.prototype и разделяются всеми экземплярами Function.

Function.prototype.arguments Устарело Нестандартно
Представляет аргументы, переданные этой функции. Для строгого режима, стрелочных, асинхронных и генераторных функций доступ к свойству arguments вызывает TypeError. Вместо этого используйте объект arguments внутри замыканий функций.
Function.prototype.caller Устарело Нестандартно
Представляет функцию, которая вызвала эту функцию. Для строгого режима, стрелочных, асинхронных и генераторных функций доступ к свойству caller вызывает TypeError.
Function.prototype.constructor
Конструктор, который создал объект экземпляра. Для экземпляров Function начальным значением является конструктор Function.

Эти свойства являются собственными свойствами каждого экземпляра Function.

displayName Нестандартно Необязательно
Отображаемое имя функции.
length
Указывает количество аргументов, ожидаемых функцией.
name
Имя функции.
prototype
Используется, когда функция используется как конструктор с оператором new. Он станет прототипом нового объекта.

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

Function.prototype.apply()
Вызывает функцию с заданным значением this и необязательными аргументами, предоставленными в виде массива (или массивоподобного объекта).
Function.prototype.bind()
Создает новую функцию, которая при вызове имеет свое ключевое слово this, установленное в предоставленное значение, опционально с заданной последовательностью аргументов, предшествующих любым предоставленным при вызове новой функции.
Function.prototype.call()
Вызывает функцию с заданным значением this и необязательными аргументами.
Function.prototype.toString()
Возвращает строку, представляющую исходный код функции. Переопределяет метод Object.prototype.toString.
Function.prototype[Symbol.hasInstance]()
Определяет процедуру по умолчанию для определения того, распознает ли функция-конструктор объект как один из экземпляров конструктора. Вызывается оператором instanceof.

Примеры

Разница между конструктором Function и объявлением функции

Функции, созданные с помощью конструктора Function, не создают замыканий к своим контекстам создания; они всегда создаются в глобальной области видимости. При их выполнении они смогут получить доступ только к своим собственным локальным переменным и глобальным, но не к переменным из области видимости, в которой был создан конструктор Function. Это отличается от использования eval() с кодом для выражения функции.

// Create a global property with `var`
var x = 10;

function createFunction1() {
  const x = 20;
  return new Function("return x;"); // this `x` refers to global `x`
}

function createFunction2() {
  const x = 20;
  function f() {
    return x; // this `x` refers to the local `x` above
  }
  return f;
}

const f1 = createFunction1();
console.log(f1()); // 10
const f2 = createFunction2();
console.log(f2()); // 20

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

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

Спецификация
Спецификация языка ECMAScript® 2027
# sec-function-objects

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

Десктоп Мобильные Сервер
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
Function
1
12
1
3
1
18
4
10.1
1
1.0
4.4
1
1.0.0
1.0
0.10.0
@@hasInstance
50
15
50
37
10
50
50
37
10
5.0
50
10
1.0.0
1.0
6.5.0
Function
1
12
1
3
1
18
4
10.1
1
1.0
4.4
1
1.0.0
1.0
0.10.0
apply
1
12
1
4
1
18
4
10.1
1
1.0
4.4
1
1.0.0
1.0
0.10.0
arguments
1
12
1
3
1
18
4
10.1
1
1.0
4.4
1
1.0.0
1.0
0.10.0
bind
7
12
4
11.6
5.1
18
4
12
6
1.0
4.4
6
1.0.0
1.0
0.10.0
call
1
12
1
4
1
18
4
10.1
1
1.0
4.4
1
1.0.0
1.0
0.10.0При вызове этого метода thisArg по умолчанию не является глобальным объектом.
caller
1
12
1
9.6
3
18
4
10.1
1
1.0
4.4
1
1.0.0
1.0
0.10.0
displayName
Нет
Нет
13
Нет
Нет
Нет
14
Нет
Нет
Нет
Нет
Нет
?
Нет
Нет
length
1
12
1
3
1
18
4
10.1
1
1.0
4.4
1
1.0.0
1.0
0.10.0
name
15
14
1
10.5
6
18
4
11
6
1.0
4.4
6
1.0.0
1.0
0.10.0
toString
1
12
1
3
1
18
4
10.1
1
1.0
4.4
1
1.0.0
1.0
0.10.0

См. также

  • function
  • function expression
  • AsyncFunction
  • AsyncGeneratorFunction
  • GeneratorFunction
  • Функции

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API