首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >函数对象和可调用对象有什么区别?

函数对象和可调用对象有什么区别?
EN

Stack Overflow用户
提问于 2009-05-22 09:41:10
回答 1查看 6.4K关注 0票数 20

我最近看过presentation about the changes in ECMAScript 5。这里有一个slide,里面有这样的声明:

函数与可调用函数

.toString.call f ===‘===’//→f是可调用的({}) typeof (F)typeof 'object Function‘//→f是函数

谁能给我解释一下函数和Callable之间的区别?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-05-22 09:45:54

一般来说,对象可以在不是函数的情况下被调用。在一切都是对象(包括函数)的语言中,可调用对象不必从函数类派生出来。

在JS中,看起来Callable是具有内部[Call]方法的任何东西(由“function”类型标识,而不是“object”)。函数(如幻灯片中所用)是函数对象的后代。我可能错了,但在脚本中,您只能创建函数,而ECMAScript实现可以定义不是函数的可调用函数。

如果您使用匿名函数/函数表达式和声明的函数来尝试幻灯片中的代码片段,结果是相同的。

代码语言:javascript
复制
typeof function() {}; // == 'function'
({}).toString.call(function() {}) // == '[object Function]'
function foo() {}
typeof foo; // == 'function'
({}).toString.call(foo) // == '[object Function]'
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/897103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档