Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“如何访问”;这";javascript中的对象?_Javascript_Object - Fatal编程技术网

“如何访问”;这";javascript中的对象?

“如何访问”;这";javascript中的对象?,javascript,object,Javascript,Object,为什么在下面的代码中,第二行给了我一个未定义的错误 function DAO() { this.arrVariable = new Array(); this.getItem = getItem; this.getItemQuery = getItemQuery; } function getItem(key) { dao.arrVariable[key](); } function getItemQuery(key, url,

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

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。我该怎么做呢?

在这种情况下,
这个
指的是
变量
。您可以在函数内部将其称为
dao.getItemQuery()

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

在这种情况下,
这个
指的是
变量
。您可以在函数内部将其称为
dao.getItemQuery()

dao.arrVariable['var1'] = function() { dao.getItemQuery('a','b','c','d'); };
您可以在这里使用或

因此,与其

dao.arrVariable['var1']();
使用其中一个

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

您可以在这里使用或

因此,与其

dao.arrVariable['var1']();
使用其中一个

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


dao.getItemQuery可以访问dao的属性

dao.getItemQuery可以访问dao的属性

this in
函数(){this.getItemQuery('a','b','c','d');}引用函数()而不是DAO。您需要通过以下方式访问DAO:

dao.arrVariable['var1'] = function() { dao.getItemQuery('a','b','c','d'); };
函数({this.getItemQuery('a','b','c','d');}引用函数()而不是DAO。您需要通过以下方式访问DAO:

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

你为什么要用“这个”?我的假设是getItemQuery实际上做的不仅仅是提醒“嘿”?也许您可以详细说明一下?DAO对象将具有更多属性。我希望在使用
函数时能够访问它们(){this.getItemQuery}
参考Michael的答案“this”对于您正在执行的操作是不需要的。由于
dao.addVariable
声明为数组,您真的打算向其添加对象属性
var1
?在JavaScript中,像
arrVariable['var1']
这样的语法指的是一个对象属性,而不是数组键。顺便说一句,如果您想要一个“关联数组”,也就是说,您想要基于键名而不是数字索引访问元素,那么您应该使用JavaScript对象:
x={};x[“键1”]=“A”为什么需要使用“this”?我的假设是getItemQuery实际上做的不仅仅是提醒“嘿”?也许您可以详细说明一下?DAO对象将具有更多属性。我希望在使用
函数时能够访问它们(){this.getItemQuery}
参考Michael的答案“this”对于您正在执行的操作是不需要的。由于
dao.addVariable
声明为数组,您真的打算向其添加对象属性
var1
?在JavaScript中,像
arrVariable['var1']
这样的语法指的是一个对象属性,而不是数组键。顺便说一句,如果您想要一个“关联数组”,也就是说,您想要基于键名而不是数字索引访问元素,那么您应该使用JavaScript对象:
x={};x[“键1”]=“A”否,
指调用函数的对象。这可能是Johns secont to last line中的数组,如果函数被“直接”调用,则可能是窗口对象。否,
指函数被调用的对象。这可能是Johns secont中的数组到最后一行,或者如果函数被“直接”调用,则可能是窗口对象。确切地说,
This
指的是
dao.arrviable
,而不是属性
var1
(即函数本身),
This
指的是
dao.arrviable
,不适用于属性
var1
(这将是函数本身)