首页 > 解决方案 > 无法通过对象名称作为字符串访问对象

问题描述

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

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

<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);

标签: javascriptvariables

解决方案


<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'].


推荐阅读