Within my code (javascript in a firefox extension), i have a list of some variables, like this:
var myApp = {
var1: true,
var2: false,
var3: true,
var4: false
};
I want to access these variables to get their value indirectly using a function:
var myApp = {
var1: true,
var2: false,
var3: true,
var4: false,
varGetter: function(aName) {
// code
return myApp.aName.value;
}
};
I call this function like this for example:
if(myApp.varGetter("var2")) {alert("true")};
Now, how this function can be implemented to do what i want?
The problem is that you are trying to access a property with the dot notation and the variable.
this sometimes creates new property or returns
undefined
You should use this notation instead
You can access gloval variables via the window variable. Example:
To get json variables, use the same notation:
EDIT: Misread the question.
You can use
myApp[aName]
to use a variable as a property name:Also, to avoid hardcoding
myApp
in your function you can replace it withthis[aName]
.If what you want to do is encapsulation (keeping variables private), you should use the module pattern, which would give you that :