如何在JavaScript中访问“this”对象?

时间:2011-12-06 02:00:36

标签: javascript object

为什么在下面的代码中,第二行是给我一个未定义的错误?

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']();

我希望能够将dao的getItemQuery作为对象调用进行访问。我该怎么做?

4 个答案:

答案 0 :(得分:4)

在此背景下,this指的是arrVariable。您可以在函数中将其称为dao.getItemQuery()

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

答案 1 :(得分:1)

您可以在此处使用applycall

所以,而不是

dao.arrVariable['var1']();

使用

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

dao.arrVariable['var1'].call(dao, /* arguments here, separated by commas */);

答案 2 :(得分:1)

dao.getItemQuery可以访问dao的属性

答案 3 :(得分:0)

这在function() { this.getItemQuery('a','b','c','d'); };中指的是函数()而不是DAO。您需要通过以下方式访问DAO:

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