Two things:
avoid eval, it's terribly dangerous and slow
secondly it doesn't matter where your function exists, "global" -ness is irrelevant. x.y.foo()
can be enabled through x.y['foo']()
or x['y']['foo']()
or even window['x']['y']['foo']()
. You can chain indefinitely like this.