如何访问“this”;对象

how to access "this" object in javascript?

本文关键字:this 对象 何访问 访问      更新时间:2023-09-26

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

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作为对象调用。我该怎么做呢?

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

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

此处可以使用applycall

所以,不用

dao.arrVariable['var1']();
使用

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

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

。getItemQuery可以访问dao的属性

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

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