有没有办法将JS对象转换为函数?

时间:2011-08-23 14:48:59

标签: javascript

  

可能重复:
  How to convert an "object" into a function in JavaScript?

我有一个理论问题。据我所知,{}对象来自Object,函数也继承自Object。有没有用户可访问的东西,可以使{}对象可以调用,比如函数,还是解释器魔法?

我想的是:

var myobj = {}
myobj["__call"] = function() {do_things();}
myobj();

并让它工作。可能吗?如果没有,为什么不呢?

谢谢!

1 个答案:

答案 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]]方法添加到一个还没有的方法中。