- 我有一张表格
- 当用户提交时,我会倾听
- 我制作了一个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
诸如
Array
或Map
之类的可迭代对象或实现可迭代协议的其他对象。
因此Object.fromEntries
将调用formData[Symbol.iterator]
,这与调用formData.entries
相同。