Не удается получить доступ к объекту через его имя в виде строки - PullRequest
0 голосов
/ 10 ноября 2018

Я пытаюсь выяснить, как можно получить доступ к объекту через строку, имя которой совпадает с именем объекта. Существуют ли какие-либо конкретные обозначения для строки, которая будет интерпретироваться как имя объекта?

Как в моем примере скрипта:

<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

Цель моего сценария - использовать идентификатор "двери" нажатой кнопки для доступа к объекту "дверь". Но сейчас это не работает, потому что идентификатор кнопки «дверь» - это просто строковое имя, которое не имеет ничего общего с объектом с таким же именем.

Как можно установить соединение, не создавая объект, который интегрировал бы объект "дверь" (чтобы сделать его доступным через обозначения в скобках)?

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 голосов
/ 10 ноября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...