我有像这样定义的javascript对象:
function SocialMiner()
{
var verbose=true;
var profileArray=new Array();
var tabUrl;
this.getTabUrl=function()
{
logToConsole("getTabUrl is called");
chrome.tabs.getSelected(null, function(tab)
{
tabUrl = tab.url;
logToConsole(tabUrl);
});
return tabUrl;
} `
然后我在SocialMiner ojbect上调用此函数,如下所示:
var pageUrl=miner.getTabUrl();
miner.logToConsole(pageUrl);
首次调用logToConsole
成功打印Url的原因是什么,而第二次调用未定义。我没有从函数中返回相同的值吗?
更新:这就是我定义logToConsole的方式:
function logToConsole(text)
{
if (verbose)
console.log(text);
}
this.logToConsole=logToConsole;
答案 0 :(得分:2)
在第二个示例中,您正在调用logToConsole,就好像它是miner对象的一个函数,而不是。
miner.logToConsole
修改
关于github示例的评论,这应该使logToConsole函数与SocialMiner对象相同。但是,我没有彻底阅读课程,因此请谨慎使用。
this.logToConsole=function(text)
{
if (verbose)
console.log(text);
}
答案 1 :(得分:0)
似乎logToConsole在全球某处定义;无论如何,它不是我们的SocialMiner类的成员。试试这个:
var pageUrl=miner.getTabUrl();
logToConsole(pageUrl);