为什么Object.fromEntries(formData)有效


  1. 我有一张表格
  2. 当用户提交时,我会倾听
  3. 我制作了一个FormData类的新实例
<form>
<input type="text" name="username">
<input type="submit">
</form>
const form = document.querySelector('form');
form.addEventListener('submit', (e) => {
e.preventDefault();
const formData = new FormData(form);
});

我知道formData.entries()将返回一个可迭代的,所以我可以使用for of循环来获得对。。。我不明白为什么这真的有效:

const pairValues = Object.fromEntries(formData);

formData是一个具有多个方法的类的实例。本身不是可迭代的。

Object.fromEntries默认情况下是否查找迭代器?

这是因为FormData对象有一个Symbol.iterator方法,这使它可以迭代。

你可以查看:

formData[Symbol.iterator] === formData.entries

它们具有相同的功能。

现在Object.fromEntries(form)接受可迭代的,也接受mdn文档:

参数

iterable

诸如ArrayMap之类的可迭代对象或实现可迭代协议的其他对象。

因此Object.fromEntries将调用formData[Symbol.iterator],这与调用formData.entries相同。

最新更新