Javascript ООП возвращаемое значение из функции - PullRequest
0 голосов
/ 03 июня 2011

У меня есть объект 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 следующим образом:

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

По какой причине первый вызов logToConsole успешно печатает URL, а второй говорит, что он не определен Я не возвращаю одно и то же значение из функции?

Обновление: так я определил logToConsole:

function logToConsole(text) 
    {
        if (verbose)
            console.log(text);
    }

    this.logToConsole=logToConsole;

Ответы [ 2 ]

2 голосов
/ 03 июня 2011

Во втором примере вы вызываете logToConsole, как если бы это была функция объекта майнера, а это не так.

miner.logToConsole

Редактировать

В комментариях к примеру с github это должно сделать функцию logToConsole равной объекту SocialMiner. Однако я не прочитал этот класс полностью, поэтому будьте осторожны в отношении того, как он предназначен для использования.

this.logToConsole=function(text) 
{
    if (verbose)
        console.log(text);
}
0 голосов
/ 03 июня 2011

Похоже, что logToConsole определяется где-то глобально;в любом случае, он не является членом нашего класса SocialMiner.Попробуйте это:

var pageUrl=miner.getTabUrl();
logToConsole(pageUrl);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...