>我有这个javascript对象:
return {
AccDocs: {
query: function() {
...
},
deleteAndQuery: function() {
...
AccDocs.query(); //Error: AccDocs is not defined
}
}
}
但是,它返回一个错误,指出AccDocs is not defined
.
我怎样才能实现这样的事情?
对象的变量和属性是不同的东西。如果不指定要指定的对象,则无法访问对象的属性。
您可能可以使用 this
关键字访问它:
this.query();
请记住,this
的值将根据函数的调用方式而变化(当调用a.b.c.d.AccDocs.deleteAndQuery()
时,deleteAndQuery
内部this
将被AccDocs
,因为它是最后一个.
左侧的第一个对象,但是如果您要先将query
复制到另一个变量,然后调用query()
, 将其传递给 setTimeout
,或者如果您要使用 call
或 apply
则 this
的值会更改)。
为了提高健壮性(但灵活性较低,因为能够更改上下文可能很有用),您可以将对象存储在可以按名称访问的变量中。
var AccDocs = {
query: function() {
...
},
deleteAndQuery: function() {
...
AccDocs.query();
}
};
return { AccDocs: AccDocs };
通过使用 this
关键字:
return {
AccDocs: {
query: function() {
...
},
deleteAndQuery: function() {
...
this.query(); //Here
}
}
}