javascript - 对象不支持此属性或方法“条目”(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 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
必须存在。所以我尝试了以下方法。
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;
};
现在我确定脚本在页面上。但是当我使用
Object.entries
错误出现在使用 polyfill 之前
尽管它肯定在页面上,但为什么错误会运行而不是边缘的 polyfill?
解决方案
您链接到的这个 Q&A 告诉您使用Object.entries
polyfillentries
在实例上提供方法FormData
,这是绝对不正确的。您提供的 polyfill向构造函数对象Object.entries
添加了一个entries
方法Object
:也就是说,您可以安全地使用文字表达式Object.entries(something)
来调用entries
对象上的方法Object
。Object.entries
是一个不同的函数,并且与实例entries
上存在的方法执行不同的操作。FormData
相反,您需要一个用于Formdata.prototype.entries
. https://github.com/github/form-data-entries提供了一个选项,尽管它通过让您编写formDataEntries(myForm)
而不是new FormData(myform).entries()
. 这不是一个合适的 polyfill(他们称其为“ponyfill”),因为它没有添加entries
方法,FormData
而是提供了一个全新的函数来做同样的事情。
推荐阅读
- swift - 带有条件泛型的 Swift 泛型类和扩展
- resize - tf.keras.layers.experimental.preprocessing.Resizing 的替代方案,适用于嵌入式系统 (ARM6)
- node.js - 从子集合中搜索包含来自父子集合的关键字
- java - 我尝试使用 ASM 将 Activity 的类名替换为 SimpleRemapper,但在 proguard apk 中找不到该类
- powerapps - powerapps解决方案中的环境变量错误
- ajax - 快速加载ajax响应
- python - Python解决ODE
- ruby-on-rails - Rails 使用日期和时间、纬度和经度进行搜索
- influxdb - 是否可以在 Influxdb 中获得聚合数据的百分位数?
- amazon-web-services - 我们可以阻止 aws 代码提交存储库中的特定分支吗