You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将"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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 00:25:22