实例化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
相关产品推荐
相关产品推荐

