一般来说,一个对象可以是可调用的,而不一定是一个函数。在一种语言中,所有的东西都是对象(包括函数),可调用的对象不必从Function类继承。
在JS中,Callable是指具有内部[[Call]]方法的任何东西(通过typeof标识为'function',而不是'object')。 Function(如幻灯片中使用的)是Function对象的后代。 我可能错了,但是在脚本中,您只能创建Functions,而ECMAScript实现可以定义不是Functions的Callables。
如果您尝试使用匿名函数/函数表达式和声明函数执行幻灯片中的代码片段,则结果相同。
typeof function() {}; // == 'function'
({}).toString.call(function() {}) // == '[object Function]'
function foo() {}
typeof foo; // == 'function'
({}).toString.call(foo) // == '[object Function]'