Accessing Variables Indirectly
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 ac
Solution 1:
The problem is that you are trying to access a property with the dot notation and the variable.
myApp.aName.value;
this sometimes creates new property or returns undefined
You should use this notation instead
myApp[aName];
Solution 2:
You can use myApp[aName]
to use a variable as a property name:
var myApp = {
var1: true,
var2: false,
var3: true,
var4: false,
varGetter: function(aName) {
return myApp[aName];
}
};
console.log(myApp.varGetter("var1")); // true
Also, to avoid hardcoding myApp
in your function you can replace it with this[aName]
.
Solution 3:
You can access gloval variables via the window variable. Example:
var foo = 'asdf';
alert(window['foo']);
To get json variables, use the same notation:
var myApp = {
var1: true,
var2: false,
var3: true,
var4: false
};
function varGetter(name) {
return myApp[name];
}
EDIT: Misread the question.
Solution 4:
If what you want to do is encapsulation (keeping variables private), you should use the module pattern, which would give you that :
var myApp = (function(){
//you can't access those variable doing myApp.var1 for example
var data = {};
data.var1 = true;
data.var2 = false;
data.var3 = true;
data.var4 = false;
//then explicitly make your getter/setter
function varGetter(varName){
return data[varName];
}
//finally, return an object into myApp, out of this closure
return {
varGetter : varGetter
};
})()
Post a Comment for "Accessing Variables Indirectly"