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

How can I use defined key in another key/value pair

本文关键字:定义 另一个      更新时间:2023-09-26

>我有这个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 ,或者如果您要使用 callapplythis 的值会更改)。

为了提高健壮性(但灵活性较低,因为能够更改上下文可能很有用),您可以将对象存储在可以按名称访问的变量中。

var AccDocs = {
    query: function() {
            ...
    },
    deleteAndQuery: function() {
            ...
        AccDocs.query();
    }
};
return { AccDocs: AccDocs };

通过使用 this 关键字:

return {
   AccDocs: {
      query: function() {
         ...
      },
      deleteAndQuery: function() {
         ...
         this.query(); //Here
      }
   }
}