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

实例化MediaDeviceInfo报错‘Illegal constructor’,能否自行创建实例?

能否自行创建MediaDeviceInfo实例?

不能直接通过new MediaDeviceInfo()或传入参数的方式手动创建MediaDeviceInfo实例,这也是你遇到Uncaught TypeError: Illegal constructor错误的原因——MediaDeviceInfo的构造函数是浏览器内部受保护的接口,不允许开发者直接调用。

MediaDeviceInfo实例只能通过浏览器提供的官方API获取,比如调用navigator.mediaDevices.enumerateDevices(),该方法会返回一个Promise,解析后得到的数组里就是对应设备的MediaDeviceInfo对象,这些对象由浏览器自动生成,关联真实的音视频输入/输出设备。

如果是为了测试或模拟场景,你可以自己创建一个结构与MediaDeviceInfo一致的普通JavaScript对象来替代,示例如下:

const mockMediaDevice = {
  deviceId: 'Brad Test',
  groupId: 'Brad Test',
  kind: 'audioinput',
  label: 'Brad Test',
  toJSON() {
    return { ...this };
  }
};

这个模拟对象拥有和真实MediaDeviceInfo相同的核心属性和方法,足以满足多数测试或模拟需求。

内容的提问来源于stack exchange,提问作者Brad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 22:40:31