FormData vs .serialize (), qual é a diferença?

Recentemente eu estava enviando um formulário usando AJAX.

Ao pesquisar o melhor método, vi algumas submissões de AJAX usando.serialize() e outros usandoFormData. Por exemplo.

Uma submissão fez o seguinte:

data: form.serialize()

enquanto o outro fez:

var formData = new FormData($('form')[0]);
data: formData

Então, qual é a diferença entreFormData e.serialize()?