简体   繁体   中英

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

I have this javascript object:

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

But, it returns an error that says AccDocs is not defined .
How can I achieve something like this?

Variables and properties on objects are different things. You cannot access the property of an object without specifying which object you mean.

You can probably access it using the this keyword:

this.query();

Keeping in mind that the value of this will vary depending on how the function is called (when abcdAccDocs.deleteAndQuery() is called, this inside deleteAndQuery will be AccDocs as it is the first object to the left of the last . , but if you were to first copy query to another variable and then call query() , pass it to setTimeout , or if you were to use call or apply then the value of this would change).

For more robustness (but less flexibility, since being able to change the context can be useful) you can store your object in a variable which you can access by name.

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

return { AccDocs: AccDocs };

By using the this keyword:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM