如何在另一个键/值对中使用已定义的键

时间:2016-02-08 08:08:23

标签: javascript json object

我有这个javascript对象:

return {
   AccDocs: {
      query: function() {
         ...
      },
      deleteAndQuery: function() {
         ...
         AccDocs.query(); //Error: AccDocs is not defined
      }
   }
}

但是,它会返回一个显示AccDocs is not defined的错误 我怎样才能实现这样的目标呢?

2 个答案:

答案 0 :(得分:2)

对象上的变量和属性是不同的东西。如果不指定您指的是哪个对象,则无法访问对象的属性。

您可以 使用this关键字

来访问它:

this.query();

请注意this的值vary depending on how the function is called(调用a.b.c.d.AccDocs.deleteAndQuery()时,this内的deleteAndQueryAccDocs.它是最后一个query左侧的第一个对象,但如果您要先将query()复制到另一个变量,然后调用setTimeout,请将其传递给call,或者如果您使用applythis,则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
      }
   }
}