javascript - 如何使用多个变量来检索 JS 对象?

标签 javascript object

我只致力于我的第三个 Javascript 项目,所以这可能很容易回答(至少我希望如此)。

我学会了使用 JS 对象代替数组。在这个项目中,我使用嵌套的 ID 系统命名了多个对象,如下所示:

animalia = new Object();
animalia.chordata = new Object();
animalia.chordata.actinopterygii = new Object();
animalia.chordata.actinopterygii.acipenseriformes = new Object();
etc.......

不过,我在调用以这种方式命名的对象时遇到问题。这是我的代码:

function expand(event){
    var target = event.target;
    console.log(target);
    var parent = target.parentNode;
    console.log(parent);
    var parentclass = parent.getAttribute("class");
    console.log(parentclass);
    if (parentclass == "kingdom"){
        var newdiv = document.createElement("div");
        var newexpctrl = document.createElement("div");
        var parentid = parent.getAttribute("id");
        console.log(parentid);  
  ----> var parentobj = window[parentid];
        console.log(parentobj);}
    else{
        var upperclass = searchArray(parentclass);
        console.log(upperclass);
        var newdiv = document.createElement("div");
        var newexpctrl = document.createElement("div");
        var parentId = parent.getAttribute("id");
        console.log(parentId);
        var parentnode_ = document.getElementById(parentId);
        console.log(parentnode_);
        var gparentId = parentnode_.parentNode.id;
        console.log(gparentId);
  ----> var parentobj = window[gparentId.parentId];
        console.log(parentobj);
    }
    var childnumb = parentobj.children;
}

我对“---->”指示的两个语句有疑问。在第一种情况下,使用单个变量可以提取正确的对象。但是,在第二种情况下,使用两个变量,我无法访问正确的对象。执行此操作的正确语法是什么?我尝试了多种不同的语法组合,但似乎没有一个能正常工作。或者除了使用“window[variable]”之外,是否应该有更好的方法来调用 JS 对象?

P.S.- 如果您现在还没有弄清楚,我正在开发用于学习生物学的教育工具。再次感谢 stackoverflow,你们是统治者。

最佳答案

假设窗口对象具有与 gparentId 值的字符串相匹配的属性,您应该能够执行以下操作:

var parentobj = window[gparentId][parentId];

关于javascript - 如何使用多个变量来检索 JS 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9315249/

相关文章:

javascript - 同步加载 iframe 和脚本

javascript - 创建 JSON 对象的最优雅方式

javascript - 使用html5向服务器上传数据时,可以在blob数据中设置文件名吗?

c# - 如何在 C# 中返回对不可修改对象的引用

java - 在运行时重写现有对象的方法的任何简单方法

Javascript:查找文本(如 ctrl+f)并在找到时返回 bool 值

javascript - 健康棒的制作方法

c# - 如何调用 MemberwiseClone()?

c# - C#中如何通过所有文件访问一个对象

python - 我可以在 Python 2.7 中从文本文件创建对象名称吗?