Gum*_*mbo 19 javascript function callable
我最近看到了有关ECMAScript 5变化的演示文稿.这句话有一张幻灯片:
功能与可调用
Run Code Online (Sandbox Code Playgroud)typeof f === 'function' // ? f is Callable ({}).toString.call(f) === '[object Function]' // ? f is a Function
任何人都可以向我解释一下Function和Callable之间的区别是什么?
out*_*tis 11
一般而言,对象可以在不作为函数的情况下调用.在一切都是对象(包括函数)的语言中,可调用对象不必从Function类继承.
在JS中,看起来像Callable是具有内部[[Call]]方法的任何东西(由'function'类型标识,而不是'object').函数(在幻灯片中使用)是Function对象的后代.我可能是错的,但在脚本中你只能创建函数,而ECMAScript实现可以定义不是函数的Callables.
如果您使用匿名函数/函数表达式和声明的函数尝试幻灯片中的代码片段,结果是相同的.
typeof function() {}; // == 'function'
({}).toString.call(function() {}) // == '[object Function]'
function foo() {}
typeof foo; // == 'function'
({}).toString.call(foo) // == '[object Function]'
Run Code Online (Sandbox Code Playgroud)