Как получить доступ к «этот» объект в JavaScript? - PullRequest
0 голосов
/ 06 декабря 2011

Почему в приведенном ниже коде вторая строка дает мне неопределенную ошибку?

function DAO()
{
        this.arrVariable = new Array();
        this.getItem = getItem;
        this.getItemQuery = getItemQuery;
}

function getItem(key)
{
        dao.arrVariable[key]();
}

function getItemQuery(key, url, options, pollfrequency)
{
        alert('hey');
}


var dao = new DAO();
dao.arrVariable['var1'] = function() { this.getItemQuery('a','b','c','d'); };

dao.arrVariable['var1']();

Я хочу получить доступ к getItemQuery дао как к вызову объекта. Как мне это сделать?

Ответы [ 4 ]

4 голосов
/ 06 декабря 2011

В этом контексте this относится к arrVariable.Вместо этого вы можете ссылаться на него как dao.getItemQuery() внутри функции:

dao.arrVariable['var1'] = function() { dao.getItemQuery('a','b','c','d'); };
1 голос
/ 06 декабря 2011

dao.getItemQuery может получить доступ к свойству Дао

1 голос
/ 06 декабря 2011

Вы можете использовать apply или call здесь.

Таким образом, вместо

dao.arrVariable['var1']();

Используйте либо

dao.arrVariable['var1'].apply(dao, /* array of arguments here */);

или

dao.arrVariable['var1'].call(dao, /* arguments here, separated by commas */);
0 голосов
/ 06 декабря 2011

Это в function() { this.getItemQuery('a','b','c','d'); }; относится к функции (), а не к DAO.Вам необходимо получить доступ к DAO:

dao.arrVariable['var1'] = function() { dao.getItemQuery('a','b','c','d'); };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...