对象不是函数错误

时间:2012-02-29 10:07:20

标签: javascript

使用以下代码:

var App = (function(param)
{
     return { foo : function() { alert(param); } }
})();

var d = App('test');
d.foo();

我收到错误消息:

object is not a function

我在这里做错了什么?

2 个答案:

答案 0 :(得分:2)

问题是,

var App = (function(param){})();

这意味着一旦遇到语句,App就会设置为{foo: function(){alert(param)}},但param未定义

尝试

var App = function(param)
{
 return { foo : function() { alert(param); } }
};

var d = App('test');
d.foo();

答案 1 :(得分:1)

您正在将匿名函数的返回值分配给App,然后尝试调用App,就好像它是该函数而不是它的返回值。

这意味着App是包含foo的对象。

或者:

  • 从第4行移除()
  • 删除第6行,并在第4行的'test'(之间放置),并在最后一行将d替换为App