我有这个javascript对象:
return {
AccDocs: {
query: function() {
...
},
deleteAndQuery: function() {
...
AccDocs.query(); //Error: AccDocs is not defined
}
}
}
但是,它会返回一个显示AccDocs is not defined
的错误
我怎样才能实现这样的目标呢?
答案 0 :(得分:2)
对象上的变量和属性是不同的东西。如果不指定您指的是哪个对象,则无法访问对象的属性。
您可以 使用this
关键字
this.query();
请注意this
的值vary depending on how the function is called(调用a.b.c.d.AccDocs.deleteAndQuery()
时,this
内的deleteAndQuery
将AccDocs
为.
它是最后一个query
左侧的第一个对象,但如果您要先将query()
复制到另一个变量,然后调用setTimeout
,请将其传递给call
,或者如果您使用apply
或this
,则var AccDocs = {
query: function() {
...
},
deleteAndQuery: function() {
...
AccDocs.query();
}
};
return { AccDocs: AccDocs };
的值会发生变化。)
为了更强大(但灵活性较差,因为能够更改上下文可能很有用),您可以将对象存储在可以按名称访问的变量中。
myConfiguration = new Configuration();
myConfiguration.Configure();
mySessionFactory = myConfiguration.BuildSessionFactory();
mySession = mySessionFactory.OpenSession();
答案 1 :(得分:1)
使用this
关键字:
return {
AccDocs: {
query: function() {
...
},
deleteAndQuery: function() {
...
this.query(); //Here
}
}
}