Javascript OOP从函数返回值

时间:2011-06-02 20:39:23

标签: javascript google-chrome

我有像这样定义的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;

2 个答案:

答案 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);