2012-02-29 144 views
0

有了下面的代碼:對象不是一個函數錯誤

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

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

我收到錯誤消息:

object is not a function 

我在做什麼錯在這裏?

回答

2

的問題是,

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

這意味着,一旦遇到該語句,應用程序設置爲{foo: function(){alert(param)}},但參數是未定義

嘗試

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

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

您將匿名函數的返回值分配給App,然後嘗試將App作爲該函數而不是其返回值調用。

這表示App是包含foo的對象。

或者:

  • 從第4行
  • 刪除線6卸下()並放置()之間'test'在第4行,並與App在最後一行替換d
+0

能你展示了哪些代替行的例子? – Dev555 2012-02-29 10:14:07

相關問題