Функции в JS являются специальной разновидностью объектов, с которым связан выполняемый код. Хоть для функции typeof вернет значение "function", обращаться и взаимодействовать с функциями можно как с объектами.
Каждая функция является экземпляром класса Function и наследует свойства от Function.prototype, который в свою очередь наследует от Object.prototype.