Вообще говоря, объект может быть вызван без функции. На языке, где все является объектом (включая функции), вызываемые объекты не должны опускаться из класса Function.
В JS, похоже, что Callable - это все, что имеет внутренний метод [[Call]] (идентифицированный типом «функции», в отличие от «объекта»). Функция (как используется в слайде) является потомком объекта Function. Я мог ошибаться, но внутри скрипта вы можете создавать только функции, в то время как реализация ECMAScript может определять Callables, которые не являются функциями.
Если вы попробуете фрагмент кода из слайда с анонимными функциями/выражением функции и с объявленными функциями, результаты будут одинаковыми.
typeof function() {}; // == 'function'
({}).toString.call(function() {}) // == '[object Function]'
function foo() {}
typeof foo; // == 'function'
({}).toString.call(foo) // == '[object Function]'
И просветить outis' ответ, вот дискуссия о том, как он пришел, чтобы быть: http://bugs.ecmascript.org/ticket/153 –
Дополнительная информация: (функция() {}) .конструктор; \t // → Протокол функции ({}). Конструктор; \t \t // → Объектный прототип – ken
@FranCorpier Эта ссылка плохая. Можете ли вы его обновить? Похоже, это может быть интересная дискуссия. – Icode4food