2011-04-22 47 views
0


我無法找到啓動腳本的正確方法。我有幾個變量,所以當文檔準備就緒時,然後變量myFunction和loadIMG等,並在代碼結束時調用myFunction.init(),但Firebug告訴我「myFunction.init( )不是一個功能「。我怎麼能以正確的方式開始呢? 感謝您的幫助:myFunction.init()是「不是一個函數」 - 我如何啓動jQuery代碼?

$(function() { 
    //... 
    var myFunction = (function() { 
     var init = function() { 
      loadIMG();  
     }, 
     loadIMG = function() { 
      etc. 
     //... 
     //then at the end of the page : 
    })(); /* myFunction */ 
    myFunction.init(); 
}); 

回答

1

如果你想把myFunction作爲構造函數,你需要做兩件事情之一。

  1. 用你想要的方法返回一個對象。

    var myFunction = (function() { 
        var init = function() { 
         loadIMG();  
        }, 
        loadIMG = function() { 
         etc. 
        //... 
        return { 
         "init": init 
        }; 
    })(); 
    
  2. 其實做一個構造函數並使用new關鍵字。在this上分配任何公共方法/變量作爲屬性。

    var myFunction = new (function() { 
        this.init = function() { 
         loadIMG();  
        }; 
        var loadIMG = function() { 
         etc. 
        //... 
    })(); 
    
+0

非常感謝,返回工作就好了!爲什麼我們需要指定回報?我想我對此有點困惑 – Paul 2011-04-23 00:37:58

0

,因爲你正在寫(function() {})(),而不是僅僅function() {}您正在評估匿名函數,是一個錯誤?如果沒有,匿名函數是否會返回一個新函數?檢查typeof myFunction以確定它是否確實是"function"

+0

,謝謝,我試圖添加成功「迴歸」,還是要謝謝你 – Paul 2011-04-22 23:51:22

0

您試圖訪問您的函數,因爲它的可見範圍之外。由於您聲明瞭myFunction變量INSIDE $(function(){}),它只是在該範圍內可見。

如果你想在您正試圖將指向訪問它,你需要的功能外聲明myFunction的這樣:

var myFunction; 
$(function() { 
    //... 
    myFunction = (function() { 
... 

的話可以參考給myFunction在腳本中任何。

+0

,謝謝,我試圖添加成功「迴歸」,還是要謝謝你 – Paul 2011-04-22 23:50:59