Element.getAttributeNames vs. Element.attributes - PullRequest
0 голосов
/ 09 февраля 2019

Мне интересно, какие преимущества и недостатки есть (если есть) в использовании Element.getAttributeNames для доступа к атрибутам объекта Element DOM вместо использования Element.attributes.

В Element.getAttributeNames MDN упоминается, чтоэто более производительная альтернатива Element.attributes, но не упоминает никаких недостатков (совместимость браузера и т. д.)

1 Ответ

0 голосов
/ 09 февраля 2019

Element.attributes более широко поддерживается;он был реализован в Chrome 26 (начало 2013 года) и поддерживается в IE11.Напротив, getAttributeNames гораздо более поздний: Chrome 61 (середина 2017 года) без поддержки IE.(реализация среди других браузеров находится на аналогичном временном интервале.)

Другое отличие состоит в том, что getAttributeNames возвращает массив, что может быть удобно, потому что вы можете использовать методы массива для него, например

elm.getAttributeNames().forEach((name) => {
  // do something
});

в отличие от

Array.prototype.forEach.call(
  elm.attributes,
  (name) => {
   // do something
  }
);

(или распространение .attributes: [...elm.attributes], хотя для этого требуется создать дополнительный промежуточный массив)

Также обратите внимание, что .attributes возвращаетмассивоподобный объект, который содержит и имена узлов и значения узлов, тогда как массив getAttributeNames содержит только имена узлов.

Чтобы использовать getAttributeNames в старых браузерах, убедитесь, чтовключить полифилл .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...