为什么 Object.fromEntries(formData) 有效
Why does Object.fromEntries(formData) work
- 我有一个表格。
- 我在用户提交时收听。
- 我创建了一个新的 FormData 实例 class。
<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()
将 return 一个可迭代的,所以我可以使用 for of
循环来获取对...我不明白的是为什么这实际上作品:
const pairValues = Object.fromEntries(formData);
formData
是具有多个方法的 class 的一个实例。本身不是可迭代对象。
Object.fromEntries 是否默认查找迭代器?
这是因为 FormData
对象有一个 Symbol.iterator
方法,这使得它可以迭代。
你可以查看一下:
formData[Symbol.iterator] === formData.entries
它们是相同的功能。
现在 Object.fromEntries(form)
接受可迭代对象,mdn 文档也是如此:
Parameters
iterable
An iterable such as Array
or Map
or other objects implementing the iterable protocol.
所以Object.fromEntries
会调用formData[Symbol.iterator]
,这和调用formData.entries
.
是一样的
- 我有一个表格。
- 我在用户提交时收听。
- 我创建了一个新的 FormData 实例 class。
<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()
将 return 一个可迭代的,所以我可以使用 for of
循环来获取对...我不明白的是为什么这实际上作品:
const pairValues = Object.fromEntries(formData);
formData
是具有多个方法的 class 的一个实例。本身不是可迭代对象。
Object.fromEntries 是否默认查找迭代器?
这是因为 FormData
对象有一个 Symbol.iterator
方法,这使得它可以迭代。
你可以查看一下:
formData[Symbol.iterator] === formData.entries
它们是相同的功能。
现在 Object.fromEntries(form)
接受可迭代对象,mdn 文档也是如此:
Parameters
iterable
An iterable such as
Array
orMap
or other objects implementing the iterable protocol.
所以Object.fromEntries
会调用formData[Symbol.iterator]
,这和调用formData.entries
.