1

I'm just picking up Javascript, and I don't understand this problem.

I have created a custom object called DeleteReasonCodes with an instance variable called delReasonCodes, declared as an array. However, the inner methods can't seem to see this instance variable. Every time I try to run it, I get a delReasonCodes is not defined error.

Perhaps I'm just not understanding the Javascript scoping rules?

var DeleteReasonCodes = {

    delReasonCodes: [],

    get: function ()
    {
        return delReasonCodes;
    },

    add: function (code, desc)
    {
        delReasonCodes.push(new DeleteReasonCode(code, desc));
    }
};
Mario S
  • 11,389
  • 24
  • 36
  • 46
asteri
  • 11,192
  • 12
  • 57
  • 82

3 Answers3

2

No, javascript scoping belongs to functions (and nothing else).

The only variable you have created is DeleteReasonCodes, and you have assigned it an object with 3 properties. You can access them via a property accessor operator if you have a reference to the object. In your case, you could use this.delReasonCode or DeleteReasonCodes.delReasonCode - see this answer for the difference.

Community
  • 1
  • 1
Bergi
  • 572,313
  • 128
  • 898
  • 1,281
1

You're treating a JavaScript object as you would a class in another language. Local-scope in JavaScript only resides inside functions, not objects. In your case, you need to access the data with a fully-qualified name:

DeleteReasonCodes.delReasonCodes.push();
Matt
  • 40,178
  • 28
  • 107
  • 146
0

If you do this

delReasonCodes: [],

get: function() {
    return this.delReasonCodes;
},
I Hate Lazy
  • 45,169
  • 12
  • 84
  • 76