2016-06-09 72 views
0

我正在尝试执行以下操作,这可能吗?在JavaScript中通过字符串名称引用对象

var objectName = {prop: 'value'}; 

var stringName = 'objectName'; 

console.log([stringName]) // output {prop: 'value'} 

更新: 其实有几个方法可以做到这一点,我已经知道,但似乎这是更多地与巴贝尔如何编译导入对象的问题。道歉这样一个沉闷的问题...

+1

你为什么要这样做? –

回答

2

如果它在全球范围内,你可以从窗口对象得到它

var objectName = {prop: 'value'}; 
 

 
var stringName = 'objectName'; 
 

 
console.log(window[stringName]) // output {prop: 'value'}


一个更好的方法是定义它内部的对象并从对象中获取值以供将来参考。

varvar obj = { 
 
    objectName: { 
 
    prop: 'value' 
 
    } 
 
}; 
 

 
var stringName = 'objectName'; 
 

 
console.log(obj[stringName]) // output {prop: 'value'}

+1

打我吧... – Liam

+0

谢谢,我实际上用eval(stringName)来管理它。必须是应用程序代码的问题 – zilj

+0

您也可以使用eval()作为OP说 – Liam

0

如果你这样做在前台,你可以做console.log(window[stringName])

-1

取决于您是否尝试访问全局对象上的属性?如果是这样,那么没有它不可能。但是,您可以像这样访问对象属性。

var myVariable = { 
    prop: 'something' 
}; 

var propName = 'prop'; 

console.log(myVariable[propName]); 

不管怎样,不污染全局变量是一个好习惯。

+0

可以访问全局对象。因为它会在窗口中,或者你可以使用eval() – Liam

+0

标题暗示,问题是关于通过名称引用对象属性。我的观点是,你不能按照建议的方式访问全球范围。相反,在JavaScript中,您可以动态访问对象属性,但首先必须指定对象。无论是窗口对象还是其他任何东西。 – Amonn

相关问题