为什么在下面的代码中,第二行是给我一个未定义的错误?
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作为对象调用进行访问。我该怎么做?
答案 0 :(得分:4)
在此背景下,this
指的是arrVariable
。您可以在函数中将其称为dao.getItemQuery()
:
dao.arrVariable['var1'] = function() { dao.getItemQuery('a','b','c','d'); };
答案 1 :(得分:1)
所以,而不是
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'); };