Javascript对象属性的引用错误
我在Google Apps脚本引擎上用Javascript构建了一个对象,每次运行脚本时,我都会收到一个引用错误,表示未定义uName 以下是相关代码:Javascript对象属性的引用错误,javascript,google-apps-script,Javascript,Google Apps Script,我在Google Apps脚本引擎上用Javascript构建了一个对象,每次运行脚本时,我都会收到一个引用错误,表示未定义uName 以下是相关代码: function DataSet() { this.uName = ""; this.dField = ""; this.qUrl = "http://api.bfbcs.com/api/pc?players="+uName+"&fields="+dFeilds; this.data = ""; this.dQue
function DataSet()
{
this.uName = "";
this.dField = "";
this.qUrl = "http://api.bfbcs.com/api/pc?players="+uName+"&fields="+dFeilds;
this.data = "";
this.dQuery = dQuery;
this.execQuery = execQuery;
根据我找到的所有来源,我不需要使用关键字var,当我包含它时,它会抛出其他错误
会发生什么事
谢谢好的,是的,变量
uName
在您发布的代码片段中没有定义。都不是dQuery
或execQuery
,也不是dFeilds
(拼写!)。它们是不是来自你没有给我们看的其他代码
this.uName有一个属性,但对象属性与JavaScript中的变量完全不同。与Java不同,它们不共享名称空间
此外,还需要对参数进行URL编码。例如:
this.qUrl = "http://api.bfbcs.com/api/pc?players="+encodeURIComponent(this.uName)+"&fields="+encodeURIComponent(this.dField);
嗯,是的,在您发布的代码片段中没有定义变量uName
。都不是dQuery
或execQuery
,也不是dFeilds
(拼写!)。它们是不是来自你没有给我们看的其他代码
this.uName有一个属性,但对象属性与JavaScript中的变量完全不同。与Java不同,它们不共享名称空间
此外,还需要对参数进行URL编码。例如:
this.qUrl = "http://api.bfbcs.com/api/pc?players="+encodeURIComponent(this.uName)+"&fields="+encodeURIComponent(this.dField);
我不确定您想做什么,但我看不到您的函数接收到这些参数:
function DataSet(uName,dFeilds,dQuery,execQuery)
{
this.uName = "";
this.dFeild = "";
this.qUrl = "http://api.bfbcs.com/api/pc?players="+uName+"&fields="+dFeilds;
this.data = "";
this.dQuery = dQuery;
this.execQuery = execQuery;
我不确定您想做什么,但我看不到您的函数接收到这些参数:
function DataSet(uName,dFeilds,dQuery,execQuery)
{
this.uName = "";
this.dFeild = "";
this.qUrl = "http://api.bfbcs.com/api/pc?players="+uName+"&fields="+dFeilds;
this.data = "";
this.dQuery = dQuery;
this.execQuery = execQuery;
@OP:根据Bob的观点,Javascript中的这个
与C、C或Java等语言中的这个
非常不同。不要让相似的名字和(在某些方面)相似的功能欺骗你。除此之外,您永远不能像在其他代码中一样关闭此,Javascript中从未假设过它。@bobince,谢谢,我做了相应的更改并更改了URL。现在一切正常。在URL的d字段
前面添加了一个缺少的this.
。旁白:哪种礼仪更好?更正答案中的一个小错误或留下一条注释指出错误,并将编辑工作交给答案作者?我省略了这个
,因为我不清楚复数形式的dFeild是否应该与dFeild
相同。不过你可能是对的![梅塔:对于一些小错误,可以进行编辑……我想我可能倾向于对已经被接受的答案进行更多的编辑,而在没有被接受的答案时,我会多加评论,但我不能完全解释这一点。]@OP:从Bob的观点来看,Javascript中的这个
与C、C或Java等语言中的这个
非常不同。不要让相似的名字和(在某些方面)相似的功能欺骗你。除此之外,您永远不能像在其他代码中一样关闭此,Javascript中从未假设过它。@bobince,谢谢,我做了相应的更改并更改了URL。现在一切正常。在URL的d字段
前面添加了一个缺少的this.
。旁白:哪种礼仪更好?更正答案中的一个小错误或留下一条注释指出错误,并将编辑工作交给答案作者?我省略了这个
,因为我不清楚复数形式的dFeild是否应该与dFeild
相同。不过你可能是对的![梅塔:对于小错误,可以进行编辑……我想我可能倾向于对已经被接受的答案进行更多的编辑,而在没有被接受的答案的情况下则会进行更多的评论,但我无法完全解释这一点。]在我在W3C网站上查看的示例中,他们没有为底部的方法传递参数。然而,他们对财产做了,但我在其他地方看到,你可以放弃。必须为类指定变量,然后指定属性并将变量分配给该属性,这似乎有点多余。。。。但是,直接通过类方法更新该属性是可以的,让变量只用于创建定义的内存位置。除非我可以这样做:this.uName=var uName;声明var
与内存位置无关,而是与指定一个变量将位于其中的块有关。参数是自动的局部变量,因此您不需要var
它们。在我在W3C网站上看到的示例中,它们没有为底部的方法传递参数。然而,他们对财产做了,但我在其他地方看到,你可以放弃。必须为类指定变量,然后指定属性并将变量分配给该属性,这似乎有点多余。。。。但是,直接通过类方法更新该属性是可以的,让变量只用于创建定义的内存位置。除非我可以这样做:this.uName=var uName;声明var
与内存位置无关,而是与指定一个变量将位于其中的块有关。参数是自动的局部变量,所以您不需要var
它们。