请查看以下代码
var selected_id=1;
resetVar("selected");
function resetVar(foo){
foo+"_id"=0; // I want to set selected_id into 0
}
这可能吗?有什么建议吗?
答案 0 :(得分:8)
如果您的变量是全局变量,那么它们是window
对象的隐式属性,您可以将它们作为window
对象的属性引用,如下所示:
function resetVar(foo){
window[foo + "_id"] = 0;
}
var selected_id = 1;
resetVar("selected");
如果您的变量不是全局变量,那么您需要将它们设置为某个已知对象的属性,以便您可以使用相同的技术。
一般来说,这通常是一个糟糕的编程想法,我们经常会看到这个问题,哪里有更好的方法来处理这种情况。你没有透露整体情况是什么,所以我们不能非常具体地建议,但是你应该直接使用已知对象的属性,或者你应该使用数组来保存数组中的几个相关值,或者你应该只是直接引用变量。
答案 1 :(得分:3)
如果选择是全局变量:
function resetVar(foo){
window[foo+"_id"] = 0;
}
答案 2 :(得分:2)
您可以在拥有该方法的对象(在您的情况下是全局的window
对象)上使用square bracket notation调用函数。
window['selected_id'] = value
答案 3 :(得分:1)
这是初学者经常提出的“解决方案”(这不是坏事,每个人都从某处开始)。答案是;不要这样做,使用数组(或其他一些集合)。
使用变量名来确定程序逻辑是一个可怕的想法,这将不可避免地导致混乱,不可维护的代码。更改varibale的名称不应该改变程序的逻辑。相反,将obbjects分组到一个集合中,如果需要,可以使用密钥到集合中,或者只是索引。