Javascript 使用'的替代方案是什么;评估';通过名称访问变量到";同步“;它和另一个?

Javascript 使用'的替代方案是什么;评估';通过名称访问变量到";同步“;它和另一个?,javascript,eval,Javascript,Eval,我希望在运行函数时保持两个JavaScript变量同步。要指向的变量位于对象中。到目前为止,我掌握的代码如下: var myname = "bob"; var thevar = ""; var varobj = {tvar: "myname"}; var syncvar = function() { thevar = eval(varobj.tvar); }; syncvar(); alert(thevar); // bob myname = "eve"; syncvar(); ale

我希望在运行函数时保持两个JavaScript变量同步。要指向的变量位于对象中。到目前为止,我掌握的代码如下:

var myname = "bob";
var thevar = "";
var varobj = {tvar: "myname"};
var syncvar = function() {
    thevar = eval(varobj.tvar);
};

syncvar();
alert(thevar); // bob
myname = "eve";
syncvar();
alert(thevar); // eve
如果不使用可怕的评估,我如何做类似的事情?请记住,我希望这个函数是通用的,也就是说,我希望它与任何人的对象一起工作

提前谢谢

澄清编辑:这是客户端。我本质上想要一个指向另一个变量的“指针”(可能不是严格意义上的定义)。我制作了一个可以同步变量的函数,但它使用eval,这让我怀疑。“通用”部分是我可以让tvar指向任何可以同步它的东西。例如,如果包含上述代码,则可以:

myage = 20;
varobj = {tvar: "myage"};
syncvar(); 
alert(thevar); // 20
myage = 100;
syncvar();
alert(thevar); // 100

因此,使它成为“通用的”,因为varobj.tvar可以“指向”任何东西以保持同步。

您可以使用setter和getter在名为
thevar
的窗口上创建一个“虚拟”属性,该属性镜像到
varobj.tvar

Object.defineProperty(window, 'thevar', {
    get: function( ) { return window[varobj.tvar]    ; },
    set: function(v) {        window[varobj.tvar] = v; }
});

> varobj = { tvar: "bob" }
> thevar = 1
> bob
< 1
Object.defineProperty(窗口“thevar”{
get:function(){返回窗口[varobj.tvar];},
set:function(v){window[varobj.tvar]=v;}
});
>varobj={tvar:“bob”}
>thevar=1
>鲍勃
< 1

您是否真的想这样做完全是另一个问题。

如果不在此处使用eval,就无法使用同步变量的通用函数。@user2864740:我认为您所做的编辑不正确。这超出了按名称加入变量的范围,假设目标变量也应按名称访问(这就是我对“universal”的理解)。@FelixKling您可能是对的。我只是。。90%确定。但是“同步”是如此的广泛,除了最终的任务外,它似乎没有被使用。请提供更多关于你想要达到的目标的信息。对我来说,将变量硬编码似乎不是很普遍。还有,用例是什么?这里有一个先前的答案,提到使用
window[varobj.tvar]
解决了我的问题。谢谢你提醒我。