可能重复:
How to convert an "object" into a function in JavaScript?
我有一个理论问题。据我所知,{}对象来自Object,函数也继承自Object。有没有用户可访问的东西,可以使{}对象可以调用,比如函数,还是解释器魔法?
我想的是:
var myobj = {}
myobj["__call"] = function() {do_things();}
myobj();
并让它工作。可能吗?如果没有,为什么不呢?
谢谢!
答案 0 :(得分:4)
有没有办法将JS对象转换为函数?
所有函数都是对象,但并非所有对象都是函数。 “调用”一个对象是什么意思,如果它还不是一个函数?
相关:What is the difference between a function object and a callable object?
从下面的评论中(因为这似乎对OP特别有用):
如果函数具有内部[[Call]]方法,则可以调用该函数。请参阅第{34页的ECMA-262 §9.11 and §13.2.1和表9。但是,AFAIK,你没有办法将[[Call]]方法添加到一个还没有的方法中。