04. Functions as Objects
Функции в JS являются специальной разновидностью объектов, с которым связан выполняемый код. Хоть для функции typeof вернет значение "function", обращаться и взаимодействовать с функциями можно как с объектами.
Каждая функция является экземпляром класса Function и наследует свойства от Function.prototype, который в свою очередь наследует от Object.prototype.
const f = () => {};
Object.prototype.isPrototypeOf(f); // trueСвойства функции:
caller- вернет объект, вызвавший данную функцию.length- число объявленных параметров функции.name- возвращает имя функцииconstructor- как обычно ссылка на функцию-конструктор.Каждая функция создается с дополнительными скрытыми свойствами - контекстом вызова
[[Scope]]функции и кодом[[Source]]функции.
Методы:
apply/bind/call-- косвенный вызов функцииtoString-- возвращает исходный код функции в виде форматированной строки (ES2018).Исходный код, если это возможно;
В противном случае - стандартная вставка (
"function FunctionName() { [native code] }").
Last updated
Was this helpful?