“如何访问”;这";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
(这将是函数本身)