Thi*_*ter 4 javascript closures dynamic-variables
为了保持全局命名空间的清洁,我的JavaScript代码包装如下:
(function() {
/* my code */
})();
Run Code Online (Sandbox Code Playgroud)
现在我在这个范围内声明了一些变量,我想使用变量名称来访问它(例如名称是'something' + someVar).在全球范围内我只是使用window['varname'],但显然这不起作用.
有什么好方法可以做我想要的吗?如果不是,我可以简单地将这些变量放在一个对象中以使用数组表示法...
注意:eval('varname')不是可接受的解决方案.所以请不要这么做.
这是一个很好的问题,因为this没有指向匿名函数,否则你显然会使用this['something'+someVar].即使使用不推荐使用arguments.callee也不起作用,因为内部变量不是函数的属性.我认为你必须通过创建一个持有者对象来完成你所描述的...
(function() {
var holder = { something1: 'one', something2: 2, something3: 'three' };
for (var i = 1; i <= 3; i++) {
console.log(holder['something'+i]);
}
})();
Run Code Online (Sandbox Code Playgroud)