如何将"object.value"形式的字符串转为可用于play函数的有效变量?
问题解决:访问对象属性并调用play方法
你的代码问题出在这几个关键点:
- 调用
play(object, audio)时,audio不是字符串形式的属性名,而是未定义的变量(你实际需要的是object的audio属性名称) - 你把对象实例和属性名拼接成字符串后去
window全局查找,这完全错误——par1是对象本身,不是全局变量的名字,拼接后得到的"[object Object].audio"根本不存在于window中
修正方案
直接利用对象的属性访问语法,既然已经拿到了对象实例par1,只需要传入属性名字符串,就能直接访问目标属性:
const object = { audio: new Audio(`link`) }; function play(par1, par2){ // 通过对象实例+属性名字符串直接获取目标元素 const element = par1[par2]; element.play(); } // 调用时第二个参数传属性名字符串 play(object, 'audio');
额外说明:如果确实需要解析"object.value"形式的字符串
如果你的场景只能拿到类似"object.audio"这样的字符串路径(而非对象实例),可以写一个工具函数逐层解析:
function getPropertyByPath(path) { const parts = path.split('.'); let current = window; for (const part of parts) { current = current[part]; if (!current) break; } return current; } // 使用示例 const element = getPropertyByPath('object.audio'); element.play();
但回到你的原始场景,第一种方案更直接高效,没必要绕弯子。
内容的提问来源于stack exchange,提问作者carl6005
相关产品推荐
相关产品推荐

