2011-06-02 76 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