为了账号安全,请及时绑定邮箱和手机立即绑定

在JavaScript中使用动态变量名称

在JavaScript中使用动态变量名称

小怪兽爱吃肉 2019-05-25 16:17:38
在JavaScript中使用动态变量名称在PHP中你可以做这样惊人/可怕的事情:$a = 1;$b = 2;$c = 3;$name = 'a';echo $$name;// prints 1有没有办法用Javascript做这样的事情?例如,如果我有一个var name = 'the name of the variable';可以获得名称变量的引用name?
查看完整描述

4 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

由于ECMA- / Javascript都是关于Objects和Contexts(它们也是Object的一些),每个变量都存储在一个这样的变量中(或者在函数,激活对象的情况下)。


所以如果你创建这样的变量:


var a = 1,

    b = 2,

    c = 3;

在全局范围(= NO函数上下文)中,您隐式将这些变量写入Global对象(= window在浏览器中)。


可以使用“点”或“括号”表示法访问这些:


var name = window.a;

要么


var name = window['a'];

这仅适用于在这种特定情况下的全局对象,因为变量对象中的全局对象是window对象本身。在函数的上下文中,您无法直接访问激活对象。例如:


function foobar() {

   this.a = 1;

   this.b = 2;


   var name = window['a']; // === undefined

   alert(name);

   name = this['a']; // === 1

   alert(name);

}


new foobar();

new创建自定义对象(上下文)的新实例。没有new函数的范围也会global(= window)。这个例子将提醒undefined和1分别。如果我们将替换this.a = 1; this.b = 2为:


var a = 1,

    b = 2;

两个警报输出都是未定义的。在这种情况下,变量a和b会被存储在从启动对象foobar,这是我们不能访问(当然,我们可以直接调用访问那些a和b)。


查看完整回答
反对 回复 2019-05-25
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

eval 是一种选择。

var a = 1;var name = 'a';document.write(eval(name)); // 1


查看完整回答
反对 回复 2019-05-25
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

您可以使用window对象来获取它。

window['myVar']

window 引用了您正在使用的所有全局变量和全局函数。


查看完整回答
反对 回复 2019-05-25
  • 4 回答
  • 0 关注
  • 3719 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信