无法通过其名称作为字符串访问对象

时间:2018-11-09 21:58:59

标签: javascript variables

我尝试找出如何通过与对象名称相同的字符串访问对象。将该字符串解释为对象名称是否有任何特定的符号?

就像我的示例脚本中一样:

<html>
    <body>
        <script>
            var door = {"opened":false, "window":{"opened":false} };

            function knocking(event){
          	    var knockedThing = event.target.id;

            	alert(knockedThing);
            	alert("door is opened : " + knockedThing.opened);
            	alert("door window is opened : " + knockedThing.window.opened);
            }
        </script>

        <button id="door" onclick="knocking(event)">A door</button>

    </body>
</html>

脚本可以在这里运行: ---> https://www.w3schools.com/code/tryit.asp?filename=FX3JE6FP2UFQ

我的脚本的目标是使用单击的按钮的ID“门”来访问对象“门”。 但是现在不起作用,因为按钮ID“门”只是一个字符串名称,与具有相同名称的对象无关。

如何在不创建集成对象“门”的对象的情况下进行连接(通过括号表示法可访问该对象)?

var house = {"door":{"opened":false, "window":{"opened":false} } };

通过括号表示法可以访问哪些内容,如下所示:

alert(house[something]);
alert("door is opened : " + house[something].opened);
alert("door window is opened : " + house[something].window.opened);

1 个答案:

答案 0 :(得分:1)

<html>
    <body>
        <script>
            var door = {"opened":false, "window":{"opened":false} };

            function knocking(event){
                var knockedThing = event.target.id;

            	alert(knockedThing);
            	alert("door is opened : " + window[knockedThing].opened);
            	alert("door window is opened : " + window[knockedThing].window.opened);
            }
        </script>

        <button id="door" onclick="knocking(event)">A door</button>

    </body>
</html>

全局变量是window对象的属性,因此您可以通过door访问window['door']