Javascript 对象没有';不支持此属性或方法';条目';(polyfill不在边缘工作)

Javascript 对象没有';不支持此属性或方法';条目';(polyfill不在边缘工作),javascript,polyfills,babel-polyfill,Javascript,Polyfills,Babel Polyfill,我也有同样的问题,我安装了polyfill作为第一个在我的应用程序上运行的脚本之一 这是有错误的JS const formdata = new FormData(form); for (var value of formdata.entries()) { console.log(value); } 这是我正在尝试的polyfill if (!Object.entries) { //this does not run on Edge. So Object.entries mus

我也有同样的问题,我安装了polyfill作为第一个在我的应用程序上运行的脚本之一

这是有错误的JS

const formdata = new FormData(form);
for (var value of formdata.entries()) {
   console.log(value); 
}
这是我正在尝试的polyfill

if (!Object.entries) { 
    //this does not run on Edge. So Object.entries must exist
    Object.entries = function( obj ){
        var ownProps = Object.keys( obj ),
            i = ownProps.length,
            resArray = new Array(i); // preallocate the Array
        while (i--)
          resArray[i] = [ownProps[i], obj[ownProps[i]]];

        return resArray;
    };
}
上面的脚本不在Edge上运行。因此
对象。条目必须存在。所以我尝试了以下方法

现在我确定脚本已经在页面上了。但是当我使用
Object.entries
时,错误出现在使用polyfill之前


尽管polyfill肯定在页面上,但为什么会运行错误而不是边缘上的polyfill?

您链接到的这个Q&A告诉您使用
对象。entries
polyfill在
FormData
实例上提供
entries
方法是绝对错误的。您为
Object.entries
提供的polyfill将
entries
方法添加到
Object
构造函数对象:也就是说,您可以安全地使用文本表达式
Object.entries(something)
调用对象
对象上的方法
entries
Object.entries
是一个不同的函数,执行的操作与
FormData
实例上存在的
entries
方法不同


相反,对于
Formdata.prototype.entries
,您需要一个polyfill。有一个选项在可用,但它通过让您编写
formDataEntries(myForm)
而不是
newformdata(myForm).entries()
来实现其目标。这不是一个合适的多边形填充(他们称之为“ponyfill”),因为它没有向
FormData
添加
entries
方法,而是提供了一个全新的函数来完成相同的任务。

与。Edge
Object.entries
Object
对象的静态方法,而不是实例方法。
Object.entries = function( obj ){
    var ownProps = Object.keys( obj ),
        i = ownProps.length,
        resArray = new Array(i); // preallocate the Array
    while (i--)
      resArray[i] = [ownProps[i], obj[ownProps[i]]];

    return resArray;
};