Javascript 如何可靠地确定浏览器是否支持DataTransfer()构造函数?

Javascript 如何可靠地确定浏览器是否支持DataTransfer()构造函数?,javascript,safari,cross-browser,data-transfer,Javascript,Safari,Cross Browser,Data Transfer,我有一个文件上传程序,它使用newdatatransfer()为上传的图像生成和显示缩略图。对于Safari用户,此构造函数是。棘手的部分是DataTransfer作为一项功能得到了支持,而不是构造函数 如何检测此功能是否存在,以便为Safari用户提供标准的文件输入?澄清一下,我并不是在寻求回退方面的帮助——只是功能检测本身 我尝试了以下几点,但都没有成功: const isConstructor = (func) => (func && typeof func ===

我有一个文件上传程序,它使用
newdatatransfer()
为上传的图像生成和显示缩略图。对于Safari用户,此构造函数是。棘手的部分是
DataTransfer
作为一项功能得到了支持,而不是构造函数

如何检测此功能是否存在,以便为Safari用户提供标准的
文件
输入?澄清一下,我并不是在寻求回退方面的帮助——只是功能检测本身

我尝试了以下几点,但都没有成功:

const isConstructor = (func) => (func && typeof func === "function" && func.prototype && func.prototype.constructor) === func;

isConstructor(DataTransfer);  //true in Safari

我能够解决这个问题,但以一种我不太满意的方式。我还是会接受我能得到的更好的答案

让dataTransferConstructorSupported=false;
请尝试{new DataTransfer(),dataTransferConstructorSupported=true}捕获{}
console.log(支持DataTransferConstructor)