I'm a total Javascript newb, and I'm trying to wrap my head around OLN. What I'm encountering is that, when calling an object method from another method on the same object, the value of local value of 'this' in the called method is changing. Here's my code:
var generator = {
generateForLevelSkillAndCount : function(level, skill, count) {
var functionCall = this['generate_' + level + '_' + skill];
return functionCall(count);
},
generate_0_4 : function(count) {
return this.generate_generic_dots(count, 3);
},
generate_generic_dots : function(count, maxDots) {
/* do cool stuff and return it */
}
};
So, I call generator.generateForLevelSkillAndCount(0, 4, 20)
and it works properly, calling generate_0_4(count)
. However, this is where it fails, with Chrome's Javascript console telling me "Uncaught TypeError: Object [object DOMWindow] has no method 'generate_generic_dots'."
I know enough to know that the problem is that the value of this
in generate_0_4
is a DOMWindow object, rather than generator (which is what this
is pointing to in generateForSkillLevelAndCount
but I can't figure out why that would possibly be happening.
Update: I updated the example code per CMS's suggestion to get rid of eval
, but the same error is being returned, so it's not just an eval
bug.