2011-06-02 50 views
1

我有這樣javascript的回調不工作

function SocialMiner()  
{ 
    var verbose=true; 
    var profileArray=new Array(); 
    var tabUrl; 
    this.getTabUrl=function(callback) 
    { 
     chrome.tabs.getSelected(null, function(tab) 
     { 
      myUrl = tab.url; 
      console.log("0"+tab.url); 
      console.log("calling callback"); 
      callback.call(tab.url); 

     }); 
    }  

    this.setTabUrlValue=function(pageUrl) 
    { 
     console.log("1"+pageUrl); 
     tabUrl=pageUrl; 
    } 
}; 

我所說的第一種方法與第二回調

var pageUrl=miner.getTabUrl(miner.setTabUrlValue); 

我看到什麼代碼是,第二功能不接收值,即pageUrl未定義,但它在第一個函數中正確傳遞。任何指針?

回答

4

您的語法爲call不正確; call的第一個參數決定了您要調用的函數內的this的值。第二個參數是您將放置的參數數組傳遞給函數

你可以簡單地在這種情況下使用

如果你想使用call

callback.call(this, tab.url); 
+1

@ninjagecko你的意思callback.call而不僅僅是回調()? – Matt 2011-06-02 22:53:42

+0

@Matt oops是的,抱歉,這是一個打字錯誤> _>刪除,記錄正確的評論應該是:*「或一般來說,你可以做'callback.call(this,tab.url)'如果,對於某些原因,你想取代'這個'對象「* – ninjagecko 2011-06-02 22:58:54