如何在javascript中存储对变量的引用?
在下面的示例中,它应该第一次打印为false,但之后应该更改为true。但它保留最初指定的值如何在javascript中存储对变量的引用?,javascript,loops,object,variables,reference,Javascript,Loops,Object,Variables,Reference,在下面的示例中,它应该第一次打印为false,但之后应该更改为true。但它保留最初指定的值 var i={ 控制:{ a:错, b:错, } } var测试=i.对照['a']; setInterval(函数(){ document.body.innerHTML+=test+','; i、 控件['a']=true; }, 500);您可以获取对象引用并获取值的最后一个键 var i={control:{a:false,b:false}, 试验=i.对照; setInterval(函数()
var i={
控制:{
a:错,
b:错,
}
}
var测试=i.对照['a'];
setInterval(函数(){
document.body.innerHTML+=test+',';
i、 控件['a']=true;
}, 500);代码>您可以获取对象引用并获取值的最后一个键
var i={control:{a:false,b:false},
试验=i.对照;
setInterval(函数(){
document.body.innerHTML+=test.a+',';
i、 控制。a=真;
}, 500);代码>我认为这在我的情况下不起作用,因为['a']也需要分配给该变量,因为它可能是任何其他值,比如['b'],您的用例非常不清楚。你到底想做什么?我只是想通过编辑控件对象使代码更易于编写和更新。我可以硬编码test的值,我只是在寻找一种更干净的方法。@stackers要么工作,要么替换I.control.a
到I.control['a']
这是相同的东西,我需要另一个变量,因为它可以是a或b,所以它最终将成为I.control[I.key.a]这已经比我希望你做的更复杂了。JavaScript中没有“对变量的引用”(有一些边缘情况作为例外,但没有任何内容可以作为参数传递给函数)。为什么不直接编写document.body.innerHTML++=i.control['a']+','代码>?你想解决什么问题?是的,这基本上解决了我的问题,我只是想让代码更易于阅读和编写,因为在我的实际代码中,测试变量要长一点,我不想每次都要键入整个内容,我希望它乍一看就容易理解,这样添加到它的人就不必总是做大量的复制粘贴.JavaScript,因此更改变量的值永远不会更改基础原语var
存储指针以及它的pass-by指针值。@stackers的工作方法是将返回i.control['a']
放在一个函数中,并调用它,如果您多次需要它,我认为您是对的,一个函数可能是可行的,而且它非常干净:test('a')