javascript - 无法通过对象名称作为字符串访问对象
问题描述
我试图找出如何通过与对象名称同名的字符串来访问对象。是否有任何特定符号可以将字符串解释为对象名称?
就像在我的示例脚本中一样:
<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);
解决方案
<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']
.
推荐阅读
- c++ - 为什么 Oracle 无法解析服务名称?
- laravel - Laravel 5.6 将对象转换为数组失败
- image - 如何为赤道偏差加权生成具有有效 y 的高斯图?
- hadoop - 用于辅助的用户定义 HBase 协处理器实现
- javascript - 在 Typescript 上声明类型时,前导管道的建议是什么
- javascript - 更改 FormArray 的表单控制顺序时的复制验证
- node.js - 如何使用自适应卡在 microsoft bot framework v4 中处理按钮输入
- angular - Angular 在父组件嵌套表单中使用子组件表单
- vue.js - 如何访问 Vue 原型中的路由对象?
- perl - 如何通过以秒为单位测量浮点类型的时间间隔来防止浮点除法变成整数除法