通过另一个变量名访问对象的数据

时间:2013-05-14 12:33:49

标签: javascript jquery arrays variables

这已经太晚了,我的脑子现在正在消隐,但是假设我有变量filename并且它存储了另一个变量marker的名称。变量marker是一个数组,包含对象&财产position: new google.maps.LatLng(42.2550,-114.3221)

我一直愚蠢地试图通过filename.position访问它,当然这会返回undefined,因为它在文字filename中搜索不存在的'position'属性。

但是如何使用marker.position来提取filename?是否有一些漂亮的jQuery技巧,呃,'解析'变量到它的内容?我被大脑炒了。我知道我以前做过这个。

2 个答案:

答案 0 :(得分:2)

如果在您的脚本中可以,您可以将数据不仅存储在变量中,而且存储在某个对象的属性中(通常使用全局数据更方便)。 例如

var myObj = {};
myObj.marker = new google.maps.LatLng(42.2550,-114.3221); // or anything else

然后,您将能够使用如下变量获取此属性:

myObj[filename].position

在这种情况下,我还建议使用myObj[filename]结构检查typeof存在,以确保myObj中存在此类属性。

if (typeof myObj[filename] !== "undefined") {
  // do something
}

正如apsillers所指出的那样,你也可以使用全局window对象。但是,如果您的marker变量是在其他功能中定义的(即非全局),则无法使用window.marker访问它或window[filename],因为它将超出范围。

第二种方法是使用eval()函数,我强烈建议避免

答案 1 :(得分:0)

试试这个:

window[filename].position;