Объект не поддерживает свойство или метод 'записи'

Я работаю с FormData объект, в то время как мой код хорошо работает в Chrome, Microsoft Edge выплевывает следующее сообщение об ошибке Object doesn't support property or method 'entries' - что соответствует следующему коду:

for(let pair of formData.entries()) {
  ...
}

Я пробовал заменить .entries() С .getAll(), однако Microsoft Edge не распознает ни один из обоих методов.

есть ли способ получить эту функциональность (перебора FormData файлы) из Microsoft Edge?

виде FormData Дамп Консоли Microsoft Edge

enter image description here

2 ответов


по сути, polyfill-это способ вручную определить функцию, которая изначально не поддерживается на определенной платформе/браузере.

в вашем случае существует базовое определение функции Object.entries приведенный здесь: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries#Polyfill

они предоставляют это простое, готовое к развертыванию определение:

if (!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;
  };

глядя на код выше, первое, что он проверяет, если . Если это так, не беспокойтесь, но если это не существует, тогда это создает его... Пока эта функция определяется до того, как вы фактически вызовете ее в своем коде, вы должны быть в порядке.

использовать что-то вроде угловой-cli, они обеспечивают polyfills.TS-файл (который выполняется до запуска приложения), где вы можете разместить такой код или импортировать файлы, содержащие определения, которые вам понадобятся.


Если вы находитесь в угловом приложении, добавьте эту строку в свои поля.файл TS

import 'core-js/es7/object';

он импортирует все новые методы на объекте, включая записи

enter image description here